1
我試圖用三個步驟來實現一個mapreduce作業,並且在每一步之後我都需要到目前爲止所有步驟中的數據。有沒有人有關於如何將映射器或縮減器的結果保存到mrjob中的磁盤的示例/想法?MapReduce:Mrjob保存結果持續
我試圖用三個步驟來實現一個mapreduce作業,並且在每一步之後我都需要到目前爲止所有步驟中的數據。有沒有人有關於如何將映射器或縮減器的結果保存到mrjob中的磁盤的示例/想法?MapReduce:Mrjob保存結果持續
您可以將多個輸入傳遞給作業,只需將前一個作業的輸出作爲輸入。
當你說你想將結果保存到磁盤時,聽起來好像你依靠輸出流回到stdout?這種行爲只是一種方便(可以關閉),MRJob一切都會從磁盤上彈出。
對於一個兩個階段的工作,你可以這樣做:
job1 = firstMR(['-r', mode, inputDir, '-o', outputDir, '--no-output'])
job1.set_up_logging()
with job1.make_runner() as runner1:
runner1.run()
firstOutput = runner1.get_output_dir()
job2 = secondMR(['-r', mode, firstOutput, anyOtherInput, '-o', finalOutputDir, '--no-output'])
job2.set_up_logging()
with job2.make_runner() as runner2:
runner2.run()
出頭注意:
讓我知道如果你碰到任何障礙,它應該是相對簡單的。
如果你使用'with job1.make_runner()作爲runner1:'那麼離開'with'作用域後'firstOutput'目錄不能被清理?工作2不應該在job1'with'聲明的範圍之內嗎? 參考:https://pythonhosted.org/mrjob/runners-runner.html#mrjob.runner.MRJobRunner.cleanup – Andy