Hadoop 和 NLTK:失败并显示停用词



我正在尝试在Hadoop上运行一个Python程序。 该计划涉及NLTK库。 该程序还利用Hadoop Streaming API,如此处所述。

mapper.py:

#!/usr/bin/env python
import sys
import nltk
from nltk.corpus import stopwords
#print stopwords.words('english')
for line in sys.stdin:
        print line,

reducer.py:

#!/usr/bin/env python
import sys
for line in sys.stdin:
    print line,

控制台命令:

bin/hadoop jar contrib/streaming/hadoop-streaming.jar  -file /hadoop/mapper.py -mapper /hadoop/mapper.py -file /hadoop/reducer.py -reducer /hadoop/reducer.py -input /hadoop/input.txt -output /hadoop/output

这完美运行,输出仅包含输入文件的行。

但是,当此行(从 mapper.py(:

#print 停用词.words("英语"(

注释,然后程序失败并说

作业不成功。错误:超出允许的失败地图任务数 # 限制。失败计数:1。

我已经检查过并在一个独立的 python 程序中,

打印停用词.单词("英语"(

工作得很好,所以我绝对不知道为什么它会导致我的Hadoop程序失败。

我将非常感谢任何帮助! 谢谢

">English"是print stopwords.words('english')中的文件吗?如果是,您也需要使用 -file 来跨节点发送它。

使用以下命令解压缩:

importer = zipimport.zipimporter('nltk.zip')
    importer2=zipimport.zipimporter('yaml.zip')
    yaml = importer2.load_module('yaml')
    nltk = importer.load_module('nltk')

删除我上面粘贴的链接。他们提到了所有步骤。

相关内容

  • 没有找到相关文章

最新更新