2016-07-31 1 views
2

Je souhaite planifier un travail AWS Data Pipeline toutes les heures. Je voudrais créer une partition horaire sur S3 en utilisant cela. Quelque chose comme:Planification du pipeline de données AWS avec des expressions et des fonctions de date

s3://my-bucket/2016/07/19/09/ 
s3://my-bucket/2016/07/19/10/ 
s3://my-bucket/2016/07/19/11/ 

J'utilise des expressions pour mon EMRActivity pour cela:

s3://my-bucket/#{year(minusHours(@scheduledStartTime,1))}/#{month(minusHours(@scheduledStartTime,1))}/#{day(minusHours(@scheduledStartTime,1))}/#{hour(minusHours(@scheduledStartTime,1))} 

Cependant, les fonctions heure et mois me donnent des données telles que 7 pour Juillet au lieu de 07, et 3 pour 3 heures au lieu de 03. Je voudrais obtenir des heures, des mois et des heures avec 0 en annexe (si nécessaire)

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-reference-functions-datetime.html

Répondre

3

Vous pouvez utiliser la fonction de format pour obtenir heures/mois dans le format que vous voulez.

#{format(myDateTime,'YYYY-MM-dd hh:mm:ss')} 

Reportez-vous au lien pour plus de détails: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-reference-functions-datetime.html

Dans votre cas, pour afficher l'heure avec 0 jointe cela devrait fonctionner:

#{format(minusHours(@scheduledStartTime,1), 'hh')} 

vous pouvez remplacer 'hh' avec « MM 'pour obtenir des mois avec 0 ajouté.

+0

Cela devrait être 'HH' pas 'hh', cependant. De toute façon, je vote pour cette réponse. – ezamur