我有一個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的配置文件?
問題是,config.properties被複制到命令的相同目錄中,而不是在conf目錄中。你有辦法直接在Hadoop命令中指定config.properties的路徑嗎?不知道是否支持像conf/config.properties#conf/config.properties這樣的符號鏈接,但可能值得一試。 – Romain
你能解決這個問題嗎? – user1452759
@ user1452759是的,我改變了我的代碼,並使用buildModel.jar將配置文件移除到同一目錄。 – SieuCau