Rob*_*son 3 compression hadoop mapreduce
我已经阅读并尝试了我能找到的每个例子,看起来像这个直接的问题.假设有一组未压缩的文本文件,我想对它们运行一个处理步骤,然后输出一组带有结果的压缩文件.为简单起见,此示例假定cat为处理步骤.
我发现的一切都表明这应该有效:
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-Dmap.output.compress=true \
-Dmap.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-mapper /bin/cat \
-reducer NONE \
-input /path_to_uncompressed \
-output /path_to_compressed
Run Code Online (Sandbox Code Playgroud)
作业正常运行,但输出纯文本文件.我尝试改变输入文件大小,改变编解码器(Snappy,BZip2等),添加一个reducer,设置mapred.output.compression.type(BLOCK,RECROD)等,结果总是一样的.作为参考,我使用的是CDH 4.1.2的新安装.
以下是Hadoop v1.0.0的工作原理:
这将产生一个gzip压缩输出:
hadoop jar /home/user/hadoop/path_to_jar/hadoop-streaming-1.0.0.jar \
-D mapred.output.compress=true \
-D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-D mapreduce.job.reduces=0 \
-mapper /bin/cat \
-input /user/hadoop/test/input/test.txt \
-output /user/hadoop/test/output
Run Code Online (Sandbox Code Playgroud)
块压缩的SequenceFile作为输出:
hadoop jar /home/user/hadoop/path_to_jar/hadoop-streaming-1.0.0.jar \
-D mapred.output.compress=true \
-D mapred.output.compression.type=BLOCK \
-D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-D mapreduce.job.reduces=0 \
-mapper /bin/cat \
-input /user/hadoop/test/input/test.txt \
-output /user/hadoop/test/output
-outputformat org.apache.hadoop.mapred.SequenceFileOutputFormat
Run Code Online (Sandbox Code Playgroud)
请注意参数的顺序以及-D和属性名称之间的空格.
如果是YARN,则不推荐使用许多属性(请参阅此处的完整列表).因此,您必须进行以下更改:
mapred.output.compress - > mapreduce.output.fileoutputformat.compress mapred.output.compression.codec - > mapreduce.output.fileoutputformat.compress.codec mapred.output.compression.type - > mapreduce.output.fileoutputformat.compress.type
| 归档时间: |
|
| 查看次数: |
7366 次 |
| 最近记录: |