mapreduce怎么获得文件的路径
这篇文章主要介绍mapreduce怎么获得文件的路径,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为怀仁企业提供专业的成都做网站、成都网站制作,怀仁网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
通常的做法是通过inputSplit来获得,如下:
InputSplit split = context.getInputSplit();
但是,如果使用MultipleInputs的话,则需要进行转化,将TaggedInputSplit转成InputSplit,如下:
InputSplit split = context.getInputSplit();
Class extends InputSplit> splitClass = split.getClass();
FileSplit fileSplit = null;
if (splitClass.equals(FileSplit.class)) {
fileSplit = (FileSplit) split;
} else if (splitClass.getName().equals("org.apache.hadoop.mapreduce.lib.input.TaggedInputSplit")) {
try {
Method getInputSplitMethod = splitClass.getDeclaredMethod("getInputSplit");
getInputSplitMethod.setAccessible(true);
fileSplit = (FileSplit) getInputSplitMethod.invoke(split);
} catch (Exception e) {
throw new IOException(e);
}
}
但是,进一步说,如果使用了CombineTextInputFormat的话,那么上述的代码仍然会报错,org.apache.hadoop.mapreduce.lib.input.CombineFileSplit cannot be cast to org.apache.hadoop.mapreduce.lib.input.FileSplit。并且CombineFileSplit内部也没有提供返回正在处理的InputSplit,虽然本身是多个InputSplit的组合。
有一个简单的办法,通过String filename = context.getConfiguration().get("map.input.file");便可以直接获得文件的全部路径。
以上是“mapreduce怎么获得文件的路径”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
网站栏目:mapreduce怎么获得文件的路径
网页URL:http://azwzsj.com/article/jdhdhs.html