2012-05-01 13 views
1

特定のファイル拡張子でのみ実行されるクラスタでMapReduceジョブを実行しようとしています。私たちはクラスタ上にある異質なデータの束を持っています。この特定の仕事のために私は.jpg上で実行したいだけです。これをマッパーで制限することなくこれを行うことができる方法はありますか?これは、あなたが仕事を実行するときにこれが何か簡単でなければならないようです。私は、hadoop fs JobName /users/myuser/data/*.jpg/users/myuser/outputのようなものを考えています。Hadoop MapReduceを特定のファイル拡張子に限定する

答えて

3

あなたの例は書かれたとおりに動作するはずですが、グロブ文字列 "/ users/myuser/data"を解決するので、setInputPaths(Job、String)メソッドを呼び出す入力書式で確認するとよいでしょう。 /*.jpg "を/ users/myuser/data内の個々のjpgファイルに追加します。

+0

あなたは正しいですが、この再帰的にする方法はありますか?私はHDFSのルートから実行したいです。 –

+0

これは一般的な問題で、パッチが適用されているようです。ここにリンク[リンク](http://stackoverflow.com/questions/8114579/using-fileinputformat-addinputpaths-to-recursively-add-hdfs-path)があります。私の元の質問にお返事いただきありがとうございます! –

+1

ディレクトリ数が固定されている場合、 '/ users/myuser/data/*/*/*。jpg'は'/users/myuser/data/'から2つのディレクトリにあるすべてのjpgファイルに一致します。しかし、あなたが指摘しているように、可変深さグロブリング( '/ users/myuser/data/**/*。jpg'など)はまだサポートされていません。 –

関連する問題