在mapper中获得inputsplit的信息
来源:互联网 发布:linux改语言环境 编辑:程序博客网 时间:2024/06/05 17:49
在社区版的hadoop版本0.19/0.20中,当使用普通的输入的时候,比如
job.setInputFormatClass(TextInputFormat.class);
在mapper运行的时候,可以用如下的方法得到对应的filesplit,也就能拿到对应的输入路径,等等信息.
(FileSplit)(reporter.getInputSplit()); 0.19
(FileSplit)(context.getInputSplit());0.20
但是如果是使用
MultipleInputs.addInputPath(job, new Path(path),
SequenceFileInputFormat.class, ProfileMapper.class);
在mapper中再使用上面的那种方式,就会报出一个类型转换错误
java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.TaggedInputSplit cannot be cast to org.apache.hadoop.mapreduce.lib.input.FileSplit
而我们需要的filesplit实际上就是TaggedInputSplit中的成员变量inputSplit
然而TaggedInputSplit这个类在社区版中并不是public的,所以我们并不能直接直接拿到对应的信息了.
不知道后续的社区版是怎么做的?可能已经修改了吧
我们公司使用的是0.19的加强版,采用的方式是把TaggedInputSplit声明为public,让后重新打一个包发布.这个是最简单的了.
(FileSplit)((TaggedInputSplit)reporter.getInputSplit()).getInputSplit(); 这样就能获得
另外还可以直接通过反射来获得TaggedInputSplit中的inputSplit.处理过程就不写了.
- 在mapper中获得inputsplit的信息
- 在mapper中获得inputsplit的信息
- Hadoop中 MapReduce中InputSplit的分析
- MapReduce中跨InputSplit数据的处理
- 在Java中获得文件的描述信息
- 在JS中获得webConfig的配置文件信息
- TabHost,在onCreate方法中获得控件的位置信息
- 如何在程序中获得wifi信息
- Hadoop新版和旧版中InputSplit大小的区别
- MapReduce中如何处理跨行的Block和InputSplit
- 在Windows Mobile中利用WebRequest下载文件并获得响应头的信息信息
- 在C#中使用ObjectDBX技术从未打开图形中获得图块的信息
- 在listView中点击其中的item。获得对应的ID或者别的信息
- Android中获得手机的版本信息
- Java中获得操作系统信息的方法
- Android中获得应用的权限信息
- 在ASP.NET中一个弹出信息窗口及获得焦点的函数
- 演示如何在物理内存中如何获得所须的BIOS信息
- ServletContextListener作用
- 最大公约数
- 关于C的思考
- PLSQL Developer V9/V8注册码
- C#按钮及窗体透明设置
- 在mapper中获得inputsplit的信息
- 站长应学会从另一个角度看待网站流量
- linux协议栈之网桥实现之一
- jQuery 源码分析
- linux协议栈之网桥实现之二
- 10大iOS开发者最喜爱的类库
- MySQLReport分析报告二
- 关于Android中长度单位(px,dip,dp,sp等)知识的总结
- 15.2.2.4 传递整型数组