在wordcount示例中,組合器明確設置爲如何禁用hadoop組合器?
job.setCombinerClass(IntSumReducer.class);
我想禁用組合器,以便組合器不處理映射器的輸出。有沒有辦法做到這一點使用MR配置文件(即不修改和重新編譯wordcount代碼)?
感謝
在wordcount示例中,組合器明確設置爲如何禁用hadoop組合器?
job.setCombinerClass(IntSumReducer.class);
我想禁用組合器,以便組合器不處理映射器的輸出。有沒有辦法做到這一點使用MR配置文件(即不修改和重新編譯wordcount代碼)?
感謝
想這是你的命令行
hadoop jar your_hadoop_job.jar your_mr_driver \
command_line_arg1 command_line_arg2 command_line_arg3 \
-libjars all_your_dependency_jars
這裏下列參數
將分別作爲arg [0],arg [1]和arg [3]傳遞給您的主方法。假定arg [0]和arg [1]用於識別輸入和輸出文件夾。你可以使用arg [3]傳遞一個布爾標誌,如('1'或'true'或'yes')來理解你是否想要使用組合器並相應地設置組合器。下面的例子(默認...它不會設置組合器類)
if ("YyesTrue1".contains(arg[3])){
job.setCombinerClass(IntSumReducer.class);
}
好問題。當你實現'ToolRunner'時,它允許你通過'-D'標誌傳遞mapreduce配置參數......但是我從來沒有見過被改變的Mapper/Reducer/Combiner類的名字。 –
讓我試着理解你的問題....所以你想要一種方式,以便你可以打開和關閉組合器通過一些外部機制?因此,如果你沒有設置組合器在第一位......你將不會有一個組合器來處理......所以,如果你能確認你的問題,我可以有更好的答案給你... – javadevg
@ javadevg對於混淆抱歉。 「所以你想要一種方式,以便通過外部機制打開和關閉組合器?因此,如果你不把組合器放在第一位......你將不會有一個組合器來處理」是的,這是我的問題。 – polerto