私はLZO圧縮ファイル/data/mydata.lzo
を持っていますが、私は持っているいくつかのMapReduceコードを使ってこれを実行したいと思います。私が最初に以下のコマンドでhadoop-lzoパッケージを使用してインデックスファイルを作成します。これは、正常Hadoop 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 jar hadoop-lzo-0.4.21.jar \
com.hadoop.compression.lzo.DistributedLzoIndexer \
/data/mydata.lzo
。私は今、それが正しく実行されるが、FOREVER取り
hadoop jar myjar.jar -input /data/mydata.lzo
いくつかの他のHadoopのJavaコードを介してこれを実行したいです。 (私はそれはそれの約25倍分割非LZOファイルの上に、この同じジョブを実行すると)私が間違って何をやっている
mapreduce.JobSubmitter: number of splits:1
それは一度だけファイルを分割気づきましたか?
hadoop-lzoのドキュメントは少し欠けています。 「」というメッセージが表示されます。新しいファイルには、wordcountなどのジョブが実行されます。私は最初に/data/mydata.lzo.index
ファイルを入力として使用するべきだと考えましたが、それを使用すると空の出力が得られます。ドキュメントには「」と表示されます.lzoファイルのインデックスを忘れると、ジョブは機能しますが、ファイル全体が1つの分割で処理されるため、効率が低下します。 "理由は問わずindex
ファイル。
インデックスファイルを渡す適切な方法は何ですか?
編集:this issue on GitHubによれば、インデックスファイルは自動的に推測され、ファイルサイズに従って分割されます。なぜ私がなぜ1つの分割を得ているのかまだ分かりません。
元のファイルのサイズは何ですか?そして圧縮後?あなたのファイルサイズが「分割サイズ」のプロパティよりも大きければ –