如何使Hue - Oozie工作流运行具有配置文件的java作业?

时间:2015-01-06 08:58:48

标签: oozie hue cloudera-cdh

我有一个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吗?

1 个答案:

答案 0 :(得分:0)

对不起,迟到了。

正如罗曼在上面解释的那样。 Hue会使用BuildModel.jar将config.properties复制到同一目录。所以我更改了代码,让BuildModel.jar在同一目录下读取配置文件。它奏效了!