我试过使用mrjob更改wordcount示例。我的结构的项目是:无法在Mrjob中导入模块
├── input_text.txt
├── store_xml_dir
│ ├── xml_file.xml
│ └── xml_parse.py
└── wordcount.py
和内容wordcount.py的是:
import os
import sys
cwdir = os.path.dirname(__file__)
sys.path.append(cwdir)
sys.path.append(os.path.join(cwdir, "store_xml_dir"))
import xml_parse
# print dir(xml_parse) <- it works here if i'd comment the rest code
from mrjob.job import MRJob
class MRWordFrequencyCount(MRJob):
def mapper(self, _, line):
getxml = xml_parse.GetXML()
print '>>>', getxml.get_strings()
yield "chars", len(line)
yield "words", len(line.split())
yield "lines", 1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
MRWordFrequencyCount.run()
当我跑,我有错误:ImportError: No module named xml_parse
。为什么python在这种情况下无法导入xml_parse
?
您需要在其他节点中放置'store_xml_dir'并将其添加到'pythonpath'。 mrjob不会将您的代码导出到其他节点。 – Mehraban 2014-10-19 10:29:51
@SAM我通过使用'sys.path.append(os.path.join(cwdir,“store_xml_dir”))附加到'pythonpath'' – Trigges 2014-10-19 10:35:58
似乎mrjob不会在任务跟踪器上执行该行代码。也许你需要手动完成。 – Mehraban 2014-10-19 10:38:16