我有一个buildModel.jar和一个文件夹“conf”,其中包含一个名为config.properties的配置文件。
运行它的命令行如下所示:
hadoop jar /home/user1/buildModel.jar -t fp-purchased-products -i hdfs://Hadoop238:8020/user/user2/recommend_data/bought_together
在进行一些分析之后,它使用“config.properties”文件中的db信息将数据存储到mongo db。
现在我需要使用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"/>
这是workflow-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 :(得分:0)
对不起,迟到了。
正如罗曼在上面解释的那样。 Hue会使用BuildModel.jar将config.properties复制到同一目录。所以我更改了代码,让BuildModel.jar在同一目录下读取配置文件。它奏效了!