إنشاء ملف الإخراج وفقًا للتاريخ في oozie
سؤال
أنا أستخدم oozie لتشغيل مهمة تقليل الخريطة.أريد إنشاء ملف الإخراج وفقًا للتاريخ.لكنه يأخذ date كسلسلة وينتهي بالطباعة بدلاً من أخذ date كقيمة:
/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}
بطريقة ما لا أستطيع الحصول على oozie كعلامة لأن سمعتي أقل من 1500
المحلول
يبدو أنك تحاول استخدام أمر Linux Shell (date +"%m%d%Y%H%M%S"
) في ملف خصائص Java - لن يتم حل هذه المشكلة.
أحد الحلول، بافتراض أن هذا جزء من مهمة سير العمل المقدمة يدويًا (بدلاً من مهمة المنسق) هو توفير خاصية التاريخ من سطر الأوامر باستخدام خيار -D key=value، وعلامات الاقتباس الخلفية لـ Linux Shell لحل المخرجات من أمر مضمن
oozie job -run -config job.properties -D date=`date +"%m%d%Y%H%M%S"`
ستحتاج إلى التأكد من أن إصدار Oozie الخاص بك يدعم خيار -D key=value
نصائح أخرى
نعم أوافق على أن خيار الصدفة يعمل.لكن هذا لا يحل حالة الاستخدام الخاصة بي.أرغب في تشغيل مهمة تقليل الخريطة الخاصة بي يوميًا وجدولة ذلك من خلال Hue.يجب تحديد معلمات دليل الإخراج كخاصية مهمة لـ Oozie.
بالمناسبة أجد ذلك لدى Oozie وظائف لغة التعبير,
وظيفة للأسف timestamp()
تقوم بإرجاع التاريخ والوقت الحاليين لـ UTC بتنسيق W3C وصولاً إلى الثانية (YYYY-MM-DDThh:mm:ss.sZ)
.أي.: 1997-07-16T19:20:30.45Z
وغير قابل للاستخدام تمامًا لإنشاء اسم دليل فرعي في HDFS
حتى الآن،
لدي الحل البديل.أنا أستخدم وظيفة Workflow 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