2015-07-21 3 views
0

Я пытаюсь глотать файлы журналов в hadoop.Oozie сгенерировать набор файлов в каталоге

Я хотел бы использовать oozie, чтобы вызвать мою задачу при проглатывании (написанную искровым), и пропустить имена файлов для моей задачи.

Я ожидаю, что файлы, которые должны быть установлены, как:

/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.log 
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.1.log 
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log1/Log1.2.log 
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.log 
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.1.log 
/example/${YEAR}-${MONTH}-${DAY}-${HOUR}:${MINUTE}/Log2/Log2.2.log 

(и т.д.).

Итак, у меня есть две проблемы: 1. Как получить oozie для генерации всех имен файлов под/example/$ {YEAR} - $ {MONTH} - $ {DAY} - $ {HOUR}: $ {MINUTE}/Log1/и передать его в мое приложение; и

  1. Как получить oozie для параллельной генерации всех имен файлов под/example/$ {YEAR} - $ {MONTH} - $ {DAY} - $ {HOUR}: $ {MINUTE}/Log2/и передать его второму вызову моей задачи.

ответ

0

DateTime имени мудры создания файла может быть сделано с помощью небольшой Java программы, которую можно назвать с Oozie Workflow.xml, Somthing как

String processedDateString = (new SimpleDateFormat("yyyyMMddhhmmss")).format(new Date(timeInMilis)); 

и при вызове же банки в рабочем процессе

 <main-class>NameFile.jar</main-class> 
     <arg>Path=${output_path}</arg> 
     <arg>Name=${name}</arg> 
     <arg>processedDate=${(wf:actionData('Rename')['ProcessedDate'])}</arg> 

Для копирования/перемещения вы можете использовать ту же программу Java с действием копирования.

для log1 и log2 местоположение можно указать в job.properties

Смежные вопросы