hadoop streaming with python modules
我已经看到了一种技术(在stackoverflow上),用于执行使用zip文件存储引用的python模块的hadoop流作业。
我在工作执行的映射阶段遇到了一些错误。我很确定它与zip'd模块加载有关。
为了调试脚本,我使用命令行管道将我的数据集通过sys.stdin / sys.stdout运行到我的mapper和reducer中,如下所示:
head inputdatafile.txt | ./mapper.py | sort -k1,1 | ./reducer.py
结果看起来很棒。
当我通过hadoop运行时,我开始遇到一些问题。即:映射器和reducer失败,整个hadoop作业完全失败。
我的zip'd模块文件包含* .pyc文件 - 是否会影响这个东西?
另外,我在哪里可以找到使用hadoop流在地图/缩小过程中产生的错误?
我已经使用-file命令行参数来告诉hadoop zip'd模块所在的位置以及我的mapper和reducer脚本所在的位置。
我没有做任何疯狂的配置选项来增加作业中使用的映射器和缩减器的数量。
任何帮助将不胜感激!谢谢!
在查看sent_tokenize的源代码之后,看起来nltk.sent_tokenize和nltk.tokenize.sent_tokenize方法/函数依赖于pickle文件(用于执行punkt标记化)来操作。
由于这是Hadoop-streaming,你必须弄清楚在哪里/如何将pickle文件放入加入hadoop作业jar的zip'd代码模块中。
底线? 我建议使用RegexpTokenizer类进行句子和单词级别标记化。