我将多个小文件放入我的输入目录,我希望将其合并到一个文件中,而不使用本地文件系统或编写mapred.有没有办法可以使用hadoof fs命令或猪?
谢谢!
为了保持网格上的所有内容,使用带有单个reducer和cat作为mapper和reducer(基本上是noop)的hadoop流 - 使用MR标志添加压缩.
hadoop jar \ $HADOOP_PREFIX/share/hadoop/tools/lib/hadoop-streaming.jar \
-Dmapred.reduce.tasks=1 \ -Dmapred.job.queue.name=$QUEUE \ -input "$INPUT" \ -output "$OUTPUT" \ -mapper cat \ -reducer cat
如果要压缩,请添加
-Dmapred.output.compress = true\-Dmapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodec
hadoop fs -getmerge
好吧......我想出了一种使用hadoop fs
命令的方法-
hadoop fs -cat [dir]/* | hadoop fs -put - [destination file]
它在我测试时起作用了......人们可以想到的任何陷阱?
谢谢!