2015-01-06 34 views
0

我有一個buildModel.jar和一個文件夾「conf」,其中包含一個名爲config.properties的配置文件。如何使Hue-Oozie工作流程運行一個具有配置文件的java作業?

運行它看起來像這樣的命令行:

hadoop jar /home/user1/buildModel.jar -t fp-purchased-products -i hdfs://Hadoop238:8020/user/user2/recommend_data/bought_together 

做一些分析後,它使用DB信息「config.properties」文件將數據存儲到一個蒙戈分貝。

現在我需要使用Hue Oozie工作流程來運行它,所以我使用Hue將jar文件和文件夾「conf」上傳到hdfs,然後創建了一個工作流程。我還補充說: 「config.properties」 文件中的工作流程

這是workflow.xml

<workflow-app name="test_service" xmlns="uri:oozie:workflow:0.4"> 
<start to="run_java_file"/> 
<action name="run_java_file"> 
    <java> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <main-class>xxx.xxx.recommender.buildModel.Application</main-class> 
     <arg>-t=fp-purchased-products</arg> 
     <arg>-i=hdfs://Hadoop238:8020/user/user2/recommend_data/bought_together</arg> 
     <file>/user/user2/service/build_model/conf/config.properties#config.properties</file> 
    </java> 
    <ok to="end"/> 
    <error to="kill"/> 
</action> 
<kill name="kill"> 
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 
<end name="end"/> 

而且這是工作流metadata.json

{"attributes": {"deployment_dir": "/user/hue/oozie/workspaces/_user2_-oozie-31-1416890719.12", "description": ""}, "nodes": {"run_java_file": {"attributes": {"jar_path": "/user/user2/service/build_model/buildModel.jar"}}}, "version": "0.0.1"} 

後做分析時,將數據保存到mongo db時出錯。看起來java文件看不到config.properties。

任何人都可以指導我如何使用Hue Oozie運行java的配置文件?

+0

問題是,config.properties被複制到命令的相同目錄中,而不是在conf目錄中。你有辦法直接在Hadoop命令中指定config.properties的路徑嗎?不知道是否支持像conf/config.properties#conf/config.properties這樣的符號鏈接,但可能值得一試。 – Romain

+0

你能解決這個問題嗎? – user1452759

+0

@ user1452759是的,我改變了我的代碼,並使用buildModel.jar將配置文件移除到同一目錄。 – SieuCau

回答

0

對不起,對於遲到的答案。

正如羅曼在上面解釋的那樣。 Hue會使用BuildModel.jar將config.properties複製到相同的目錄。所以我改變了代碼讓BuildModel.jar在同一個目錄下讀取配置文件。有效 !

相關問題