0

LZO 圧縮ファイルが/data/mydata.lzoあり、これを MapReduce コードで実行したいと考えています。最初に、次のコマンドでhadoop-lzoパッケージを使用してインデックス ファイルを作成します。

>> hadoop jar hadoop-lzo-0.4.21.jar \
    com.hadoop.compression.lzo.DistributedLzoIndexer \
    /data/mydata.lzo

これは正常に実行されます

17/01/04 11:06:31 INFO mapreduce.Job: Running job: job_1472572940387_17794
17/01/04 11:06:41 INFO mapreduce.Job: Job job_1472572940387_17794 running in uber mode : false
17/01/04 11:06:41 INFO mapreduce.Job:  map 0% reduce 0%
17/01/04 11:06:52 INFO mapreduce.Job:  map 86% reduce 0%
17/01/04 11:06:54 INFO mapreduce.Job:  map 100% reduce 0%
17/01/04 11:06:54 INFO mapreduce.Job: Job job_1472572940387_17794 completed successfully

ファイルを作成します/data/mydata.lzo.index。これを他のHadoop Javaコードで実行したい

hadoop jar myjar.jar -input /data/mydata.lzo

正しく実行されますが、永遠にかかります。ファイルが 1 回だけ分割されることに気付きました (LZO 以外のファイルに対してこの同じジョブを実行すると、約 25 回分割されます)。

mapreduce.JobSubmitter: number of splits:1

私は何を間違っていますか?

hadoop-lzo のドキュメントが少し不足しています。「新しいファイルに対して、ワードカウントなどのジョブを実行します」と表示されます。ファイルを入力として使用する必要があると最初に考えましたが、それを使用/data/mydata.lzo.indexすると空の出力が得られます。ドキュメントには、「.lzo ファイルのインデックス作成を忘れた場合、ジョブは機能しますが、ファイル全体を 1 回の分割で処理するため、効率が低下することに注意してください。」と記載されているため、何らかの理由でindexファイルが表示されません。

インデックスファイルを渡す適切な方法は何ですか?

編集: GitHub のこの問題によると、インデックス ファイルは自動的に推測され、ファイル サイズに応じて分割されます。なぜ私が単一の分割を取得しているのかはまだわかりません。

4

1 に答える 1

0

これを試して:

hadoop jar myjar.jar -input /data/mydata.lzo -input /data/mydata.lzo.index
于 2017-08-02T02:30:39.067 に答える