2013-11-20 48 views
1

我開發了一個使用ToolRunner的MapReduce應用程序。基於用戶傳遞的參數和配置屬性,應用程序以某種方式設置作業:選擇特定的輸入/輸出格式,選擇映射器和減速器類等。此邏輯在run(String[] args)方法中由我的主該類實現ConfiguredTool如何使用Oozie運行MapReduce ToolRunner作業?

Oozie支持MapReduce動作節點,但問題是我無法將它們與我的自定義ToolRunner應用程序一起使用。 MapReduce操作僅允許通過配置輸入/輸出格式,映射器/縮減器類和鍵/值類來定義靜態作業。我的應用程序基於更高級別的業務邏輯動態執行此操作。

動作要能夠執行這樣的命令行:

hadoop jar my.jar com.example.MyMainClass -D my.config1=a -D my.config2=b arg1 arg2 

我可以創建支持ToolRunner MapReduce應用Oozie的行動?

回答

1

是的,您可以使用Java Action。不幸的是,這不是理想的,因爲Oozie創造了一份工作,然後運行你的創造它自己的工作的ToolRunner。它確實工作。

+0

根據你的回答,我閱讀了更多關於Java Actions的內容,並發現它們是從一個映射器運行的,就像Shell Actions一樣。 Pig和Hive動作是否也從映射器開始? –

+0

好問題。我沒有嘗試過Pig或Hive操作,所以我不知道他們在做什麼。但我不會感到驚訝。 – climbage

+0

是的,豬的動作也是從一個映射器開始的。 – Oleksii