2015-07-21 49 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位置

相關問題