我试图将日志文件摄取到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
(等)。
所以,现在我有两个问题: 1.如何让oozie生成/ example / $ {YEAR}下的所有文件名 - $ {MONTH} - $ {DAY} - $ {HOUR}:$ {MINUTE} / Log1 /并将其传递给我的应用程序;和
答案 0 :(得分: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
中提及