hadoop:使用nlineinputformat和压缩?

oxcyiej7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(360)
$ cat abook.txt | base64 –w 0 >onelinetext.b64
$ hadoop fs –put onelinetext.b64 /input/onelinetext.b64
$ hadoop jar hadoop-streaming.jar  \
    -input /input/onelinetext.b64 \
    -output /output \
    -inputformat org.apache.hadoop.mapred.lib.NLineInputFormat \
    –mapper wc

num task:1,输出有一行:
1号线:12 202699
这是有意义的,因为每个Map器一行。

$ bzip2 onelinetext.b64
$ hadoop fs –put onelinetext.b64.bz2  /input/onelinetext.b64.bz2
$ hadoop jar hadoop-streaming.jar \
      -Dmapred.input.compress=true \
      -Dmapred.input.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
      -input /input/onelinetext.b64.gz \
      -output /output \
      -inputformat org.apache.hadoop.mapred.lib.NLineInputFormat \
      –mapper wc

我期待与上面相同的结果,'因为解压缩应该在处理单行文本(即wc)之前发生,但是,我得到:
num task:397,输出有397行:
线路1-396:0
第397行:1 2 202699
知道为什么有这么多mapred.map.tasks<>1吗?分裂?我特意选择gzip,因为我认为它是不可分割的。我在使用bzip2和lzop编解码器时得到了类似的结果。
谢谢你提前回答。

fkvaft9z

fkvaft9z1#

我认为这取决于您使用的hadoop版本。例如hadoop-4012…

相关问题