通过hadoop streaming 输入两个文件或目录

来源:互联网 发布:element linux 编辑:程序博客网 时间:2024/05/20 19:17
通过Hadoop streaming写Mapreduce程序时,会遇到同时处理多个输入文件或者目录的的需求,那么如何在map程序中知道这一条内容到底来自哪个文件?
其实hadoop已经给留了解决方法:在map端获取环境变量mapreduce_map_input_file,即为本次的输入文件。

sh脚本中:
-input ${hdfs_input_path} \-input ${hdfs_input_path_user} \

py文件中判断目录:
def mapper():    filepath = os.environ.get('mapreduce_map_input_file')    filename = os.path.split(filepath)[0]    for line in sys.stdin:        if filename == 'hdfs://hadoop/user/hdfs/merge_test':            pass        if filename == 'hdfs://hadoop/user/hdfs/file_test':            pass

注意:hdfs://hadoop是集群的名字,if判断路径的时候需要写上。


py文件中判断文件名:
def mapper():    filepath = os.environ.get('mapreduce_map_input_file')    filename = os.path.split(filepath)[-1]    for line in sys.stdin:        if filename == 'file_name1':            pass        if filename == 'file_name2':            pass


阅读全文
0 0
原创粉丝点击