簡體   English   中英

在Hadoop群集上使用make_runner導致mrjob bad --steps錯誤

[英]mrjob bad --steps error using make_runner on Hadoop cluster

我正在嘗試以編程方式運行簡單的單詞計數示例,但無法使代碼在hadoop集群上工作。

test_job.py中的工作:

from mrjob.job import MRJob
import re


WORD_RE = re.compile(r"[\w']+")

class MRWordFreqCount(MRJob):

    def mapper(self, _, line):
        for word in WORD_RE.findall(line):
            yield word.lower(), 1

    def combiner(self, word, counts):
        yield word, sum(counts)

    def reducer(self, word, counts):
        yield word, sum(counts)

mr_job_test.py中的跑步者:

from test_jobs import MRWordFreqCount

def test_runner(in_args, input_dir):
    tmp_output = []
    args = in_args + input_dir
    mr_job = MRWordFreqCount(args.split())
    with mr_job.make_runner() as runner:
        runner.run()
        for line in runner.stream_output():
            tmp_output = tmp_output + [line]
    return tmp_output

if __name__ == '__main__':
    input_dir = 'hdfs:///test_input/'
    args = '-r hadoop '
    print test_runner(args, input_dir)

我可以在本地運行此代碼(使用inline選項),但是在hadoop上,我得到了:

> Traceback (most recent call last):   File "mr_job_tester.py", line 17,
> in <module>
>     print test_runner(args, input_dir)   File "mr_job_tester.py", line 8, in test_runner
>     runner.run()   File "/usr/local/lib/python2.7/dist-packages/mrjob/runner.py", line 458, in
> run
>     self._run()   File "/usr/local/lib/python2.7/dist-packages/mrjob/hadoop.py", line 239, in
> _run
>     self._run_job_in_hadoop()   File "/usr/local/lib/python2.7/dist-packages/mrjob/hadoop.py", line 295, in
> _run_job_in_hadoop
>     for step_num in xrange(self._num_steps()):   File "/usr/local/lib/python2.7/dist-packages/mrjob/runner.py", line 742, in
> _num_steps
>     return len(self._get_steps())   File "/usr/local/lib/python2.7/dist-packages/mrjob/runner.py", line 721, in
> _get_steps
>     raise ValueError("Bad --steps response: \n%s" % stdout) ValueError: Bad --steps response:

據此 )mrjob提交作業文件並在mapper和reducer中遠程執行它的方式,使得下面的敵人行必須在作業聲明文件中:

if __name__ == "__main__":
    MRWordFreqCount.run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM