Question

J'utilise Oozie pour gérer mon travail de carte-rédaction. Je souhaite créer le fichier de sortie en fonction de la date. Mais il faut une date comme une chaîne et finit par imprimer au lieu de prendre la date comme valeur:

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

Voici le fichier Oozie Properties:

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}

D'une manière ou d'une autre, je ne peux pas avoir Oozie comme tag parce que ma réputation est inférieure à 1500

Était-ce utile?

La solution

On dirait que vous essayez d'utiliser une commande shell Linux (date +"%m%d%Y%H%M%S") Dans un fichier de propriétés Java - cela ne va pas résoudre.

Un travail, en supposant que cela fait partie d'un travail de workflow soumis manuellement (par opposition à un travail de coordinateur) consiste à fournir la propriété de date de la ligne de commande à l'aide de l'option de clé -d = valeur et de remise des cotations de shell Linux pour résoudre la sortie d'une commande en ligne

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

Vous devrez vous assurer que votre version d'Oozie prend en charge l'option -D KEY = Value

Autres conseils

Oui, je suis d'accord que l'option Shell fonctionne. Mais cela ne résout pas mon utilisation. Je veux exécuter mon travail de carte-réduisant quotidiennement et planifier cette teinte. Le répertoire de sortie doit être paramétré en tant que propriété de travail à Oozie.

Au fait je trouve que Oozie a des fonctions de langage d'expression,

Malheureusement la fonction timestamp() Renvoie la date et l'heure actuelles de l'UTC au format W3C jusqu'au deuxième (YYYY-MM-DDThh:mm:ss.sZ). c'est à dire: 1997-07-16T19:20:30.45Z et complètement inutilisable pour créer un nom de sous-répertoire dans HDFS

Alors pour l'instant,

J'ai une solution de contournement. J'utilise la fonction de workflow el wf:id()Dans workflow.xml

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

Cela crée un répertoire de sortie avec un sous-répertoire comme,

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

Remarque: vous devez le spécifier dans le workflow.xml. Cela ne fonctionnera pas si vous l'avez spécifié dans le travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top