Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
2015-01-15 19:53
726 查看
1. 上一篇我们提到用python 和 hadoop streaming的方式写mapreduce,那么我们怎么向map和reduce的脚本传递参数呢,本来着重讲这个
2. 我们知道用java写mapreduce的时候可以传参数给map或者reduce,具体的就是用Configuration去set值,然后在map或者reduce端用get进行获取,这个就不多说了,不是本文重点
3. 不多说,直接贴出来,
我们可以看到比上一篇介绍的多了-cmdenv 其实这个就是传参数的配置项,那么我们在map或者reduce中怎么取呢,如下:
os模块可以取,给一个key就相应得能取到key对应的value
4. 这还是很简单的,但是这个却应该熟练掌握,毕竟比较重要
2. 我们知道用java写mapreduce的时候可以传参数给map或者reduce,具体的就是用Configuration去set值,然后在map或者reduce端用get进行获取,这个就不多说了,不是本文重点
3. 不多说,直接贴出来,
#!/bin/bash hadoop fs -rmr trans_record/result hadoop jar ./hadoop-streaming-2.0.0-mr1-cdh4.7.0.jar \ -input $1 \ -output trans_record/result \ -file map.py \ -file reduce.py \ -mapper "python map.py" \ -reducer "python reduce.py" \ -jobconf mapred.reduce.tasks=1 \ -jobconf mapred.job.name="qianjc_trans_record" \ -cmdenv "card_start=$2" \ -cmdenv "card_last=$3" \ -cmdenv "trans_at=$4"
我们可以看到比上一篇介绍的多了-cmdenv 其实这个就是传参数的配置项,那么我们在map或者reduce中怎么取呢,如下:
#!/usr/bin/env python # vim: set fileencoding=utf-8 import sys import os def main(): card_start = os.environ.get('card_start') card_last = os.environ.get('card_last') trans_at = float(os.environ.get('trans_at')) for line in sys.stdin: detail = line.strip().split(',') card = detail[0] money = float(detail[17]) if trans_at == money and card_start == card[1 : 7] and card_last == card[-4 : ]: print '%s\t%s' % (line.strip(), detail[1]) if __name__ == '__main__': main()
os模块可以取,给一个key就相应得能取到key对应的value
4. 这还是很简单的,但是这个却应该熟练掌握,毕竟比较重要
相关文章推荐
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- 如何向map和reduce脚本传递参数,加载文件和目录
- (转)如何向map和reduce脚本传递参数
- Hadoop Streaming: 使用Java以外的语言去实现Map/Reduce
- Python+Hadoop Streaming实现MapReduce(word count)
- HadoopMapReduce -Map-Reduce具体实现详解
- 实例讲解hadoop中的map/reduce查询(python语言实现)
- 实现向 python 脚本中传递列表,字典参数
- mapreduce中map处理过程?参数如何解析传递给map方法?
- Python利用hadoop Streaming编写的Map-Reduce程序命令运行和本地调试运行
- 用hadoop-streaming 运行python map-reduce程序
- 实例讲解hadoop中的map/reduce查询(python语言实现)
- 实例讲解hadoop中的map/reduce查询(python语言实现)
- hive语句嵌入python脚本(进行map和reduce,实现左外连接)
- HadoopMapReduce --Map-Reduce具体实现详解