对于在一个MR-Job中使用多路径作为输入文件,一般有三种方法:

1).多次调用,加载不同路径:

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; //输入路径in01 in02
String in01 = "hdfs://RS5-112:9000/cs01/path01";
String in02 = "hdfs://RS5-112:9000/cs02/path02"; //多次调用addInputPath()方法
FileInputFormat.addInputPath(job,new Path(in0));
FileInputFormat.addInputPath(job,new Path(in1));

2).一次调用,同时加载多路径(字符串用逗号隔开):

//这种方式的第二个参数只能是:将路径以逗号拼接的字符串
FileInputFormat.addInputPaths(job,
"hdfs://RS5-112:9000/cs01/path1,hdfs://RS5-112:9000/cs02/path2");

3).使用MultipleInputs类的方法

addInputPath(Job job, Path path,
Class<? extends InputFormat> inputFormatClass);
addInputPath(Job job, Path path,
Class<? extends InputFormat> inputFormatClass,
Class<? extends Mapper> mapperClass);

MultipleInputs类的强大之处在于不仅可以多次调用addInputPath()方法加载路径,而且可以根据路径的不同指定不同的输入格式,更有甚者还可以根据输入格式的不同指定不同的Mapper函数进行处理。详见 MR案例:倒排索引 && MultipleInputs 和 MR案例:CombineFileInputFormat

DEMO1:

MultipleInputs.addInputPath(job,
new Path("hdfs://RS5-112:9000/cs01/path01"),
TextInputFormat.class);
MultipleInputs.addInputPath(job,
new Path("hdfs://RS5-112:9000/cs02/path2"),
KeyValueInputFormat.class);

DEMO2:

MultipleInputs.addInputPath(job,
new Path("hdfs://RS5-112:9000/cs01/path01"),
TextInputFormat.class,
Mapper01.class);
MultipleInputs.addInputPath(job,
new Path("hdfs://RS5-112:9000/cs02/path2"),
KeyValueInputFormat.class,
Mapper02.class);

最新文章

  1. JavaScript动画-磁性吸附
  2. kendo ui 富文本编辑控件 Editor 实现本地上传图片,并显示
  3. Android中常用的布局
  4. C#6.0特性笔记
  5. sort关于去除重复/查找非重复/查找重复/统计
  6. 实现JavaScript自定义函数的整合、链式调用及类的封装
  7. 一看就懂的ReactJs入门教程(精华版)
  8. CM 部署bigdata测试环境群集机器报错
  9. WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞
  10. 文件权限和目录权限详解(rwx)
  11. Pick-up sticks(判断两直线相交)
  12. Hibernate学习之一对多关联
  13. 201521123101 《Java程序设计》第1周学习总结
  14. python selenium-webdriver 登录验证码的处理(十二)
  15. spring 引用Bean的属性值
  16. Odoo 去掉 恼人的 &quot;上午&quot;和&quot;下午&quot;
  17. ORA-01919: role &#39;PLUSTRACE&#39; does not exist
  18. JAVA框架Struts2 Action类
  19. webform的导出
  20. C++11新特性之线程操作

热门文章

  1. 使用RMySQL连接MySQL数据库(R-3.4.3)
  2. centos下vsftpd不能显示文件,不能创建文件及文件夹
  3. ntpdate同步更新时间
  4. centos7修改hostname和hosts
  5. Python并行编程(五):线程同步之信号量
  6. Notepad++ 更换主题+字体
  7. PHP命名空间-总结
  8. 安卓android的联系人的contacts, raw contacts, and data的区别
  9. Linux服务器access_log日志分析及配置详解(一)
  10. http协议中post方法发出请求