如何从eclipse调试用mrjob编写的python MapReduce程序

时间:2012-12-11 12:12:26

标签: python eclipse mapreduce mrjob

我正在尝试使用Ubuntu下的eclipse调试在python的mrjob库中编写的mapreduce作业。有没有人知道如何做到这一点?

2 个答案:

答案 0 :(得分:4)

调试MrJobs有时候会遇到很大挑战。 我的学习曲线开始于使用try ...除了mappers和reducers中的子句,产生了(使用traceback模块)生成的异常,而不是打破了作业流程。 但是第一种方法耗费时间很多次,你需要等待几分钟才能完成工作,最后,大多数错误都会导致未定义的变量或语法错误。 因此,我尝试使用小型测试日志来提供作业,这大大减少了运行作业所花费的时间,以查看问题所在。 另一种方法是测试hadoop之外的映射器和缩减器,这可以非常方便,因为你可以使用pdb来实现这个目的,并快速找出问题。

最后,您还可以尝试使用MrJob的文档,然后您将找到如何在本地运行该作业,这非常方便: http://packages.python.org/mrjob/runners-inline.html

答案 1 :(得分:2)

关键是尽可能多地进行测试。即使您在本地运行作业,反复重新运行作业也会很快耗尽您的一天。对我来说最重要的是分解地图并将步骤缩减为一系列较小的函数,并为每个小步骤编写单元测试。

另外,请注意本地Python版本与Hadoop实例上安装的版本之间的差异(最新的EMR实例使用Python 2.6)。我列出了一些调试技巧here