2015-07-21 46 views
0

我试图将日志文件摄入hadoop。Oozie在目录中生成一组文件

我想用oozie来触发我的摄取任务(用火花写成),并让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 /并将其传递给我的任务的第二次调用。

回答

0

日期时间明智的文件名,创建可以使用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程序。

您可以在job.properties中提到的log1和log2位置

相关问题