Hadoop运行python作业时的依赖于其他库的问题
来源:互联网 发布:直线裁剪算法代码 编辑:程序博客网 时间:2024/05/16 06:57
用hadoop streaming可以运行python写的map-reduce作业。但是如果map/reduce依赖于其他库呢?比如,map中依赖于我们自己写的一个库:hadoop_lib.py中的某些方法。这时在运行streaming作业的时候,如果还是像原来一样的命令行,就会出现”Broken Pipe”之类的异常。解决方法就是加上-file参数,并加上依赖的库文件。如果有多个依赖的文件,可以用多次-file参数,或者用-files。这样实际上hadoop是把文件放入它的分布式缓存中,然后在执行task的目录创建一个到实际文件的链接。
而在map.py/reduce.py中,我们直接导入即可:
importhadoop_lib
这个依赖库默认是和map/reduce程序在同一路径下。这对于开发可不太好,总不能把lib里的东西都放到特定作业的目录里来吧。我们可以这么做:
先创建lib的目录,比如/hadoop/lib,并把hadoop_lib.py库文件放到这个目录中。
然后在map.py/reduce.py中加上:
importsys;
sys.path.append(‘/hadoop/lib’);
importhadoop_lib
这时,如果程序是在本地测试,因为/hadoop/lib已经加入到path中,程序能够正确地找到库文件。而如果是在运行task的远程节点上,由于库文件和map/reduce是在同一目录,它仍能正确地找到,只不过sys.path.append这一行没有用罢了。
- Hadoop运行python作业时的依赖于其他库的问题
- Hadoop运行包含第三方依赖库的MapReduce作业
- Python中四种运行其他程序的方式
- Python中四种运行其他程序的方式
- 运行Hadoop遇到的问题
- Hadoop运行出现的问题
- hadoop第一次运行的问题
- Retrofit一依赖于OkHttp 的请求库
- 使用ToolRunner运行Hadoop作业的原理及用法
- maven配置: 生成war的同时生成jar, 并在其他artifact配置依赖于这个jar
- Hadoop作业的一生
- Hadoop作业的生命周期
- 学习Python以及其他知识时自己出现的问题
- 入侵其他院的作业......
- 依赖于设备的位图(DDB)
- Unity3d依赖于平台的编译
- hadoop运行时遇到的问题及解决方案
- Hadoop JAR包运行时权限不够的问题
- android传感器(2)
- Gstreamer Segments
- Gstreamer 预滚(Preroll)
- Apache Torque的关键配置参数 (DBCP)
- Gstreamer part-progress.txt翻译
- Hadoop运行python作业时的依赖于其他库的问题
- 两个编译2.4与2.6内核模块的Makefile 模板
- C++保存和调用lua函数
- android property system
- atoi和itoa函数
- Saving changes is not permitted (SQL Server 2008 R2)
- 工具栏控件绑定下拉式颜色选择框、文本框及响应事件
- #if,#endif,!defined的意义和用法 C语言
- 关于CAM卡(大卡)和智能卡(小卡)