質問

私は私の地図を減らす仕事を実行するために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}
.

どういうわけか私の評判が1500未満のために札としてOozieを持っていることはできません

役に立ちましたか?

解決

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

これが手動で送信されたワークフロージョブの一部であると仮定して(コーディネータジョブとは対照的に)このようにして、-d key= valueオプションを使用してコマンドラインからDateプロパティを提供することです。インラインコマンドの出力を解決します

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

あなたのバージョンのOozieが-d key= valueオプションをサポートしていることを確認する必要があります。

他のヒント

はい、シェルオプションの機能に同意します。しかし、それは私のUSECASEを解決しません。私は私の地図を毎日減らすことを走りたい、そしてこのフエをスケジュールします。出力ディレクトリは、Oozieへのジョブプロパティとしてパラメータ化する必要があります。

それは、その Oozieを見つける方法で関数

残念な関数timestamp()は、w3c形式のUTC現在の日付と時刻を2番目の(YYYY-MM-DDThh:mm:ss.sZ)に返します。 hdfs でサブディレクトリ名を作成するための1997-07-16T19:20:30.45Zと完全に使用できない

だから、

回避策があります。私はワークフロー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 で指定した場合、これは機能しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top