我安装了Pydoop
,并试图运行MapReduce
作业。为了进行试运行,我尝试执行字数示例wordcount_minimal.py
和wordcount_full.py
。他们两个都挂在地图阶段。在stderr
的最后,我根据运行的脚本找到了以下消息:
模块'wordcount_minimal'没有属性' main '
或
模块'wordcount_full'没有属性' main '
我使用以下命令执行了作业:
pydoop提交-上传文件到缓存wordcount_full.py wordcount_full hdfs_input_dir hdfs_output_dir
无法找到其背后的原因。知道是什么原因吗?
我能够使用map
和reduce
函数从pydoop script
执行示例,并且成功完成了该示例。但是使用pydoop submit
选项,我遇到了这个问题。不知道我是否想念一些东西。
PS:我有一个群集,其中有2个节点运行Hortonworks HDP 2.6.5
。 Pydoop
都安装在两者上。
答案 0 :(得分:1)
默认情况下,pydoop Submit需要一个名为__main__
的入口点,但是您可以通过--entry-point
对其进行修改。例如,如果您的代码是:
class Mapper ...
class Reducer ...
def run():
pipes.run_task(pipes.Factory(Mapper, Reducer))
您可以通过pydoop submit --entry-point run ...