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 

タスク数: 1、出力には次の 1 行があります。

1 行目: 1 2 202699

マッパーごとに1行が意図されているため、これは理にかなっています。

$ 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 

上記と同じ結果が得られると予想していますが、1 行のテキスト (つまり wc) を処理する前に解凍が行われるはずですが、次の結果が得られます。

タスク数: 397、出力には 397 行あります。

Line1-396: 0 0 0

397 行目: 1 2 202699

mapred.map.tasks <>1 が非常に多い理由は何ですか? 分裂?gzip は分割できないと思うので、意図的に gzip を選択します。bzip2 と lzop コーデックを使用すると、同様の結果が得られました。

事前にご回答いただきありがとうございます。

4

1 に答える 1

0

使用している Hadoop のリリースによって異なると思います。たとえば、HADOOP-4012があります…</p>

于 2013-03-28T12:04:57.060 に答える