用户登录
用户注册

分享至

mapreduce多路径输出

  • 作者: 我叫小小猫
  • 来源: 51数据库
  • 2020-09-30
1.MapReduce多路径输入
1.1FileInputFormat.addInputPath(s)
FileInputFormat.addInputPath()是我们最常用的设置MapReduce输入路径的方法了。其实,FileInputFormat有两个这样的方法:

[html] view plain copy
static void addInputPath(Job job, Path path)

static void addInputPaths(Job job, String commaSeperatedPaths)

addInputPath()只能指定一个路径,如果要想添加多个路径需要多次调用该方法:

[java] view plain copy
FileInputFormat.addInputPath(job, new Path(args[0]));
FileInputFormat.addInputPath(job, new Path(args[1]));
FileInputFormat.addInputPath(job, new Path(args[2]));

addInputPaths()可以指定多条路径,而这多条路径是用“,”分隔的一个字符串:

[java] view plain copy
String paths = strings[0] + "," + strings[1];
FileInputFormat.addInputPaths(job, paths);



  支持多路输出(suffixmultipletextoutputformat)

如下示例:
hadoop streaming \
-input /home/mr/data/test_tab/ \
-output /home/mr/output/tab_test/out19 \
-outputformatorg.apache.hadoop.mapred.lib.suffixmultipletextoutputformat\ # 指定outputformat为org.apache.hadoop.mapred.lib.suffixmultipletextoutputformat
-jobconf suffix.multiple.outputformat.filesuffix=a,c,f,abc,cde \ # 指定输出文件名的前缀,所有需要输出的文件名必须通过该参数配置,否则job会失败
-jobconf suffix.multiple.outputformat.separator="#"\ # 设置value与文件名的分割符,默认为“#”,如果value本身含有“#”,则可以通过该参数设置其他的分隔符
-mapper "cat" \
-reducer "sh reduce.sh" \
-file reduce.sh
注:标记为红色的参数必须设置!
软件
前端设计
程序设计
Java相关