使用hadoop流式处理运行外部python lib like(NLTK)

2024-09-28 03:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过使用http://blog.cloudera.com/blog/2008/11/sending-files-to-remote-task-nodes-with-hadoop-mapreduce/

zip -r nltkandyaml.zip nltk yaml
mv ntlkandyaml.zip /path/to/where/your/mapper/will/be/nltkandyaml.mod

import zipimport
importer = zipimport.zipimporter('nltkandyaml.mod')
yaml = importer.load_module('yaml')
nltk = importer.load_module('nltk')

我得到的错误是:

job_201406080403_3863/attempt_201406080403_3863_m_000000_0/work/./app/mapper.py", line 12, in import nltk ImportError: No module named nltk

任何人谁确实面临类似的问题,请你提出一个详尽的解决办法。在

谢谢


Tags: toimportmodhttpyamlloadblogzip
1条回答
网友
1楼 · 发布于 2024-09-28 03:19:36

我遵循以下方法,成功地在hadoop流媒体中运行了nltk包。在

注意:我只使用了nltk包而不是yaml,所以我的回答只会集中在加载nltk包而不是yaml上,但我相信它应该也适用于您的问题。在

假设您的系统中已经安装了nltk包

第一个:

zip -r nltk.zip nltk
mv ntlk.zip /place/it/anywhere/you/like/nltk.mod

为什么要去哪里工作?
Ans:-因为我们将通过命令行提供这个.mod压缩文件的路径,所以我们不需要太担心它。在

第二:
mapper或.py文件中的更改

^{pr2}$

第三:我想你可能错过的最重要的是

运行map reduce的命令行参数

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-file /your/path/to/mapper/mapper.py \
-mapper '/usr/local/bin/python3.4 mapper.py' \
-file /your/path/to/reducer/reducer.py \
-reducer '/usr/local/bin/python3.4 reducer.py' \
-file /your/path/to/nltkzippedmodfile/nltk.mod \
-input /your/path/to/HDFS/input/check.txt -output /your/path/to/HDFS/output/

因此,上述步骤解决了我的问题,我认为也应该解决其他问题。
干杯

相关问题 更多 >

    热门问题