0
$ 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号线:1 2 202699

这是有道理的,因为每个映射器只有一行。

$ 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)之前进行解压缩,但是,我得到:

任务数:397,输出有 397 行:

第 1-396 行:0 0 0

397线:1 2 202699

知道为什么这么多 mapred.map.tasks <>1 吗?分裂?我故意选择 gzip,因为我相信它是不可拆分的。使用 bzip2 和 lzop 编解码器时,我得到了类似的结果。

提前感谢您的回答。

4

1 回答 1

0

我认为这取决于您使用的 Hadoop 版本。有,例如HADOOP-4012 ...</p>

于 2013-03-28T12:04:57.060 回答