首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MapReduce工作笔记——Streaming多路输出

多路输出

加入如下命令:

代码语言:javascript
复制
-outputformat org.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat \   
-jobconf suffix.multiple.outputformat.filesuffix=file_path_1,file_path_2  \             
-jobconf suffix.multiple.outputformat.separator="#" \                        
  1. 指定outputformat org.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat
  2. 指定输出文件名的前缀,所有需要输出的文件名必须通过该参数配置,否则job会失败
  3. 设置value与文件名的分割符,默认为“#”,如果value本身含有“#”,框架会自动匹配至最后一个分隔符,用户亦可通过该参数重新设置其他的分隔符。

注:

  1. 上面三个是必须参数,否则会报错
  2. 当value为空时要在key值与"suffix.multiple.outputformat.separator"之间补充一个\t分隔符
  3. 输出不能有空行
  4. key和value值中不能有换行符

实现

只要在 map reduce脚本中print字符串中加上#file_path 比如要将aaa写入file_path_1bbb 写入file_path_2 使用Python如下: 使用#进行分割

代码语言:javascript
复制
if line == "aaa":
	print line + "#file_path_1"
elif line == "bbb":
	print line + "#file_path_2"
下一篇
举报
领券