hadoop lzo索引后单分裂

np8igboo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(446)

我有一个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

它执行正确,但需要永远。我注意到它只拆分一次文件(当我在非lzo文件上运行同一个作业时,它拆分了大约25次)

mapreduce.JobSubmitter: number of splits:1

我做错什么了?
hadoop lzo文档有点缺乏。它说“现在在新文件上运行任何作业,比如wordcount”。我首先想我应该使用 /data/mydata.lzo.index 文件作为我的输入,但我得到一个空的输出时使用。文档还说“请注意,如果您忘记索引一个.lzo文件,作业将工作,但将处理整个文件在一个单一的分裂,这将是效率较低的。”因此,无论出于何种原因,它没有看到 index 文件。
传递索引文件的正确方法是什么?
编辑:根据github上的这个问题,索引文件将自动推断出来,并将根据文件大小进行拆分。我还是不知道为什么我要分开。

sf6xfgos

sf6xfgos1#

试试这个:

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

相关问题