Hadoop streaming mapreduce多文件输入使用方法

来源:互联网 发布:防雾霾口罩推荐知乎 编辑:程序博客网 时间:2024/05/10 00:49
写Mapreduce程序时,常常会有同时处理多个输入文件的的需求,那么如何在map程序中方便的知道这一条record到底来自哪个文件呢?如果数据源是可控的,我们尚可以通过字段的个数等来判断,然而这不是一个优雅的方法,其实hadoop已经给了留了解决方法:在map端获取环境变量map_input_file(0.21.x的版本分支中是mapreduce_map_input_file)即为本次的输入文件。

以笔者使用的hadoop streaming + python环境为例:

输入文件有两个:
-input "/home/hadoop/file1"
-input "/home/hadoop/file2"

在mapper文件中:
if 'file1' in os.getenv('map_input_file'):
//文件1处理逻辑
if 'file2' in os.getenv('map_input_file'):
//文件2处理逻辑

0 0
原创粉丝点击