Hadoop使用Streaming的一些坑

有的时候,使用Hadoop Streaming比写Map、Reduce要轻量一些。但是由一些坑要注意。

例如,使用SequenceFile、指定分隔符等等。

一般情况下,建议把脚本放到sh中,因为awk等经常有单、双引号转意的问题。同时注意加到-file选项,使得其自动分发。

–inputformat,要注意选择SequenceFileAsTextInputFormat而不是SequenceFile,否则默认时不解压缩的。

关于Map输入的控制:

 

关于Reduce输出的控制:

  • 告诉OutputWriter,key和value不是用\t分割,可以-D stream.reduce.output.field.seperator=”\x01″
  • 最终输出中,key和value之间的分割符,选择非\t,可以-D mapred.textoutputformat.separator=”|”

Leave a Reply

Your email address will not be published.