2012-02-24 11 views
1

map-reduceジョブを実行するためにoozieを使用しています。私は、日付に応じて出力ファイルを作成したいと思います。しかし、それは文字列として日付を受け取り、値として日付を取るのではなく、印刷し終わる: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を持ってカントので、私:ここ

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

はoozieプロパティファイルであります評判が1500未満です

答えて

3

JavaプロパティファイルでLinuxシェルコマンド(date +"%m%d%Y%H%M%S")を使用しようとしているようですが、これは解決されません。

手動で送信されたワークフロージョブ(コーディネータジョブではなく)の一部であると仮定すると、-D key = valueオプションを使用してコマンドラインからdateプロパティを指定し、linuxシェルのバッククォート= valueオプションをあなたはOozieのバージョンが-Dキーをサポートすることを確認する必要がありますコマンドをインライン

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

の出力を解決するための

+0

確かに試してみましょう。ありがとう! – RFT

0

はい、私はシェルのオプションが機能し同意するものとします。しかし、それは私のユースケースを解決しません。私はmap-reduce仕事を毎日実行し、色相を使ってこれをスケジュールしたいと思います。出力ディレクトリはOozieのジョブプロパティとしてパラメータ化する必要があります。私が見つけところで

そのOozie has Expression language Functions、二(YYYY-MM-DDThh:mm:ss.sZ)までW3C形式でUTC現在の日付と時刻を返しますtimestamp()

残念ながら機能。すなわち:1997-07-16T19:20:30.45Zと、今のところそうHDFS

をサブディレクトリ名を作成するための完全に使用できない私は、回避策を持っています。私は、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 

NOTEをワークフローEL機能wf:id() を使用しています:あなたはworkflow.xmlでこれを指定する必要があります。これはjob.propertiesに指定した場合は機能しません