Domanda

Sto usando Oozie per eseguire il mio lavoro di riduzione della mappa.Voglio creare il file di output in base alla data.Ma prende appuntamento come una stringa e finisce la stampa invece di prendere la data come valore:

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

Ecco il file delle proprietà 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}
.

in qualche modo non posso avere Oozie come tag perché la mia reputazione è inferiore a 1500

È stato utile?

Soluzione

Sembra che tu stia tentando di utilizzare un comando di shell Linux (date +"%m%d%Y%H%M%S") in un file di proprietà Java: non sarà intenzione di risolvere.

Uno svolgersi, supponendo che questo fa parte di un lavoro del flusso di lavoro inviato manualmente (al contrario di un lavoro di coordinatore) è quello di fornire la proprietà Data dalla riga di comando utilizzando l'opzione del tasto -D= Opzione Valore e le citazioni di Shell LinuxRisolvi l'uscita di un comando inline

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

Dovrai assicurarti che la tua versione di Oziende supporti il tasto -d tasto= opzione valore

Altri suggerimenti

Sì, sono d'accordo che l'opzione Shell funziona. Ma questo non risolve il mio usecase. Voglio eseguire la mia mappa, ridurre il lavoro quotidiano e programmare questo thru tonalità. La directory di uscita deve essere parametrizzata come proprietà del lavoro a Oozie.

A proposito trovo che Oozie ha un linguaggio di espressione Funzioni ,

Sfortunatamente la funzione timestamp() restituisce la data e l'ora della corrente UTC in formato W3C fino al secondo (YYYY-MM-DDThh:mm:ss.sZ). I.e.: 1997-07-16T19:20:30.45Z e completamente inutilizzabile per la creazione di un nome della sotto-directory in HDFS

Quindi per ora,

Ho una soluzione alternativa. Sto usando il flusso di lavoro EL Function wf:id() IN workflow.xml

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

Ciò crea una directory di uscita con sottodirectory come,

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

Nota: è necessario specificarlo nel workflow.xml. Questo non funzionerà se lo hai specificato nel lavoro.properties

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top