0

我正在尝试将日志文件摄取到 hadoop 中。

我想使用 oozie 来触发我的摄取任务(用 spark 编写),并让 oozie 将文件名传递给我的任务。

我希望将日志文件设置为:

/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.log
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.1.log
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.2.log
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.log
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.1.log
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.2.log

(ETC)。

所以,现在我有两个问题:1.如何让oozie生成/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1下的所有文件名/ 并将其传递给我的应用程序;和

  1. 如何让 oozie 并行生成 /example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/ 下的所有文件名并将其传递给第二次调用我的任务。
4

1 回答 1

0

DateTime wise 文件名创建可以通过使用小的 Java 程序来完成,可以从 Oozie Workflow.xml 调用,类似于

String processedDateString = (new SimpleDateFormat("yyyyMMddhhmmss")).format(new Date(timeInMilis));

并在工作流程中调用同一个 jar

      <main-class>NameFile.jar</main-class>
      <arg>Path=${output_path}</arg>
      <arg>Name=${name}</arg>
      <arg>processedDate=${(wf:actionData('Rename')['ProcessedDate'])}</arg>

对于复制/移动,您可以使用与复制操作相同的 Java 程序。

对于 log1 和 log2 位置,您可以在 job.properties 中提及

于 2015-08-04T10:17:18.313 回答