2012-02-24 110 views
1

我正在使用oozie來運行我的map-reduce作業。我想根據日期創建輸出文件。但是這需要時間作爲一個字符串結束,而不是採取日期值up打印:在oozie中根據日期創建輸出文件

/user/skataria/geooutput/$(date +"%m%d%Y%H%M%S") 

這裏是Oozie的屬性文件:

nameNode=hdfs://localhost:8020 
jobTracker=localhost:8021 
date=(date +"%m%d%Y%H%M%S") 
oozie.wf.application.path=${nameNode}/services/advert/sid 
inputDir=${nameNode}/user/${user.name}/geoinput/testgeo 
outputDir=${nameNode}/user/${user.name}/geooutput/${date} 

不知何故,我不能有Oozie的作爲標記,因爲我聲譽在1500以下

回答

3

看起來您正嘗試在java屬性文件中使用linux shell命令(date +"%m%d%Y%H%M%S") - 這不會解決。

解決辦法之一是,假設這是手動提交的工作流作業(而不是協調器作業)的一部分,則使用-D key = value選項從命令行提供date屬性,並使用linux shell反引號解決一個命令行內

oozie job -run -config job.properties -D date=`date +"%m%d%Y%H%M%S"` 

你需要確保你的Oozie的版本支持-D鍵=值選項

+0

請務必嘗試一下。謝謝! – RFT 2012-03-21 14:06:44

0

是的,我同意shell選項作品的輸出。但是這並不能解決我的使用問題。我想每天運行我的地圖縮減工作,並安排通過色調。輸出目錄需要參數化爲Oozie的作業屬性。

通過我找到的方式,Oozie has Expression language Functions

不幸的是timestamp()下返回W3C格式UTC當前日期和時間到第二(YYYY-MM-DDThh:mm:ss.sZ)功能。即:1997-07-16T19:20:30.45Z和完全無法使用在HDFS

創建一個子目錄名稱

因此,現在

我有一種變通方法。我使用的工作流程EL功能wf:id()workflow.xml

<property> 
    <name>mapreduce.output.fileoutputformat.outputdir</name> 
    <value>/user/sasubramanian/impressions/output/outpdir/${yyyy_mm_dd}/${wf:id()}</value> 
</property> 

這將創建子目錄作爲一個輸出目錄,

/user/foouser/subdir1/output/outpdir/0000006-130321100837625-oozie-oozi-W 

注:必須在workflow.xml指定。如果您在job.properties中指定它,這將不起作用。