您的位置:首页 > 运维架构

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

2017-08-11 14:52 127 查看
通过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐