如何让 Hue - Oozie 工作流运行一个有配置文件的 java 作业?
How to make Hue - Oozie workflow run a java job which has config file?
我有一个 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" 文件中的数据库信息将数据存储到 mongo 数据库中。
现在我需要使用 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 数据库时出现错误。 java 文件似乎看不到 config.properties.
任何人都可以指导我如何使用 Hue Oozie 运行 java 有配置文件吗?
抱歉回答晚了。
正如罗曼在上面所解释的那样。 Hue 会将 config.properties 复制到与 BuildModel.jar 相同的目录中。所以我更改了代码,让 BuildModel.jar 读取同一目录中的配置文件。成功了!
我有一个 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" 文件中的数据库信息将数据存储到 mongo 数据库中。
现在我需要使用 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 数据库时出现错误。 java 文件似乎看不到 config.properties.
任何人都可以指导我如何使用 Hue Oozie 运行 java 有配置文件吗?
抱歉回答晚了。
正如罗曼在上面所解释的那样。 Hue 会将 config.properties 复制到与 BuildModel.jar 相同的目录中。所以我更改了代码,让 BuildModel.jar 读取同一目录中的配置文件。成功了!