0

我已经看到了一种技术(在 stackoverflow 上),用于使用 zip 文件执行 hadoop 流作业来存储引用的 python 模块。

我在作业执行的映射阶段遇到了一些错误。我相当肯定它与压缩模块加载有关。

为了调试脚本,我使用命令行管道通过 sys.stdin/sys.stdout 将我的数据集运行到我的映射器和减速器中,如下所示:

头输入数据文件.txt | ./mapper.py | 排序-k1,1 | ./reducer.py

结果看起来很棒。

但是,当我通过 hadoop 运行它时,我开始遇到一些问题。即:映射器和reducer 失败,整个hadoop 作业完全失败。

我的压缩模块文件包含 *.pyc 文件 - 这会影响这件事吗?

另外,我在哪里可以找到在使用 hadoop 流的映射/缩减过程中产生的错误?

我已经使用 -file 命令行参数来告诉 hadoop 压缩模块的位置以及我的映射器和减速器脚本的位置。

我没有做任何疯狂的配置选项来增加工作中使用的映射器和减速器的数量。

任何帮助将不胜感激!谢谢!

4

1 回答 1

0

查看 sent_tokenize 的源代码后,看起来 nltk.sent_tokenize 和 nltk.tokenize.sent_tokenize 方法/函数依赖于一个 pickle 文件(用于进行 punkt 标记化的文件)来操作。

由于这是 Hadoop 流式传输,因此您必须弄清楚将 pickle 文件放置在何处/如何将其放入已添加到 hadoop 作业 jar 的 zip 代码模块中。

底线?我建议使用 RegexpTokenizer 类进行句子和单词级别的标记化。

于 2012-09-23T22:43:36.897 回答