【发布时间】:2014-07-09 07:17:37
【问题描述】:
我有jar 文件需要在运行我们的map reduce 进程之前运行。这将处理稍后输入到 map reduce 过程的数据。 jar 文件在没有 oozie 的情况下工作正常,但我喜欢自动化工作流程。
jar if 运行应该接受两个输入:<input_file> 和 <output_dir>
并且应该期望在指定的<output_dir>下输出两个文件<output_file_1>、<output_file_2>。
这是工作流程:
<workflow-app name="RI" xmlns="uri:oozie:workflow:0.4">
<start to="RI"/>
<action name="RI">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>java </exec>
<argument>-jar</argument>
<argument>RI-Sequencer.jar </argument>
<argument>log.csv</argument>
<argument>/tmp</argument>
<file>/user/root/algo/RI-Sequencer.jar#RI-Sequencer.jar</file>
<file>/user/root/algo/log.csv#log.csv</file>
<capture-output/>
</shell>
<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-app>
我使用Hue 运行任务,目前我无法将进程的输出写入文件。它运行良好,但是找不到假定的文件。
我也将输出目录更改为 HDFS,但结果相同,没有生成文件。
如果有帮助,这是我的 jar 文件中的代码示例:
File fileErr = new File(targetPath + "\\input_RI_err.txt");
fileErr.createNewFile();
textFileErr = new BufferedWriter(new FileWriter(fileErr));
//
// fill in the buffer with the result
//
textFileErr.close();
更新: 如果有帮助,我可以上传jar文件进行测试。
更新 2: 我已更改为使其写入 HDFS。使用 Oozie 执行作业时仍然无法正常工作。独立运行作业。
【问题讨论】:
-
你能分享你正在读取然后将文件写入 hdfs 的代码吗?
-
我的代码如上,不打算将文件写入HDFS。我正在尝试将文件保存在本地。
标签: java hadoop cloudera oozie hue