python hadoop stream 提交多模块python
来源:互联网 发布:法语之言能无从乎 编辑:程序博客网 时间:2024/06/07 23:09
hadoop jar streaming提交多个模块python文件。
1.python工程结构:
python包分为com/main,com/pk
2.python代码
工具模块 SplitStr.py
#! /usr/bin/env python #coding=utf-8'''Created on 2017年4月18日@author: lzw'''class SplitString(object): ''' 分割字符串 ''' def split_blank(self,msg): result = msg.split(" ") return result
mapper WordCountMap.py
#! /usr/bin/env python #coding=utf-8'''Created on 2017年4月18日@author: lzw'''import sysfrom com.pk.SplitStr import SplitStringsp = SplitString()for line in sys.stdin : line = line.strip() lSplit = sp.split_blank(line) for word in lSplit : print word + "\t" + "1"reducer WordCountRed.py
#! /usr/bin/env python #coding=utf-8'''Created on 2017年4月18日@author: lzw'''import syswordct = {}for line in sys.stdin : line = line.strip() sp = line.split("\t") if wordct.has_key(sp[0]) : wordct[sp[0]] = wordct[sp[0]] + 1 else : wordct[sp[0]] = 1for item in wordct.items() : print item[0],item[1]
3.处理文件text.txt
You can specify any executable as the mapper and/or the reducer.The executables do not need to pre-exist on the machines in the cluster; however,if they don't, you will need to use "-file" option to tell the framework to packyour executable files as a part of job submission. For example:For a
4. 运行shell脚本
#! /bin/bashEXEC_PATH=$(dirname "$0")JAR_PACKAGE=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jarIN_PATH=/home/lzw/testmodule/input/*OUT_PATH=/home/lzw/testmodule/outputMAP_FILE=${EXEC_PATH}/com/main/WordCountMap.pyRED_FILE=${EXEC_PATH}/com/main/WordCountRed.pyFILE=${EXEC_PATH}/com$HPHOME/bin/hadoop jar $JAR_PACKAGE \-D mapred.job.name=myjob \-D stream.map.input.ignoreKey=true \-D map.output.key.field.separator=, \-D num.key.fields.for.partition=1 \-D stream.map.output.field.separator='\t' \-numReduceTasks 3 \-input $IN_PATH \-output $OUT_PATH \-mapper $MAP_FILE \-reducer $RED_FILE \-file $FILE \-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner5.linux 环境部署方式
假设运行路径为/home/test/testmodule,在当前目录创建com目录,在com目录下创建main和pk目录,在每个目录创建空__init__.py,将WordCountMap.py和WordCountRed.py提交到main目录下,将SplitStr.py提交到pk目录下。将shell脚本在/home/test/testmodule,上传text.txt到hadoop文件系统目录/home/lzw/testmodule/input/目录下。
1 0
- python hadoop stream 提交多模块python
- python hadoop stream 传参
- Hadoop Stream Python mapper或reducer添加参数
- 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce
- Python & Hadoop
- python模块
- python 模块
- python-模块
- python 模块
- python模块
- python 模块
- python模块
- python 模块
- python 模块
- 模块-python
- python 模块
- python模块
- Python 模块
- 【HDU3480】Division-DP+四边形不等式优化+贪心
- Android Https相关解析与okhttp
- 欢迎使用CSDN-markdown编辑器
- php的技术应用
- 位操作基础篇之位操作全面总结
- python hadoop stream 提交多模块python
- 一洽CEO:一洽在线客服生态链的使命
- vs下c++调用matlab
- php常见的六种设计模式
- Linux学习篇第二章~unit2
- java File类遍历出文件夹下的所有文件
- Android error: “Apostrophe not preceded by \” 解决办法
- 5064. 友好城市
- 浅谈mysql的搜索引擎之MyISAM和InnoDB的异同