博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop在Mapper内部获取Input File的文件名
阅读量:6047 次
发布时间:2019-06-20

本文共 1092 字,大约阅读时间需要 3 分钟。

hot3.png

好吧,我承认用Hadoop来处理大数据是件很酷的事。但是有时候在做course project的时候还是让我很受挫。

很多时候我们在一个map-reduce任务中,会用到Join,这样整个job的输入可能就是两个以上的文件了(换句话说:mapper要处理两个以上的文件)。

如何用mapper处理多输入的情况:

多个mapper:每个mapper处理对应的输入文件

MultipleInputs.addInputPath(conf, new Path(args[0]), TextInputFormat.class, CustomerMap.class); MultipleInputs.addInputPath(conf, new Path(args[1]), TextInputFormat.class, TransactionMap.class); FileOutputFormat.setOutputPath(conf, new Path(args[2]));

一个mapper:一个mapper处理所有不同的文件:(如下代码段,在mapper内部,我们可以数据来自哪个文件,然后进行相应的处理)

public static class Map extends MapReduceBase implements Mapper
{ public void map(LongWritable key, Text value, OutputCollector
output, Reporter reporter) throws IOException { //Get FileName from reporter FileSplit fileSplit = (FileSplit)reporter.getInputSplit(); String filename = fileSplit.getPath().getName(); //String line = value.toString(); output.collect(new Text(filename),value); } }

PS: mapper的输入可以是一个文件夹:FileInputFormat.setInputPaths(conf, new Path("/tmp/"));

转载于:https://my.oschina.net/sbzhouhao/blog/165495

你可能感兴趣的文章
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
查看>>
算术运算表达式正则及分析
查看>>
Oracle 12c 多租户 手工创建 pdb 与 手工删除 pdb
查看>>
shell初涉
查看>>
[浪子学编程][MS Enterprise Library]ObjectBuilder之创建策略祥解(二)
查看>>