2016-07-12 3 views
0

Можно настроить координатор Oozie, что может вызвать рабочий процесс для обработки каждой группы файлов при следующих условиях:Oozie конфигурации Координатор для нескольких зависимостей файла

Группы определяется мною как просто набор файлов под родительский каталог. Каждый xx mins Группы файлов загружаются в соответствующий каталог HDFS. Каждая группа файлов представляет таблицы из определенной базы данных. Каждая группа файлов содержится в их собственной родительской папке HDFS, например Database1, Database2.

Имена файлов во всех именах родительских/групповых имен. То, что я хотел бы сделать oozie (если это возможно): Сканировать, что все файлы в этом конкретном родительском каталоге существуют, каждое имя файла будет отличаться и именуется по умолчанию после таблиц, которые представляют эти файлы с разделителями.

Если все файлы существуют (из шаблона, определенного в Oozie), я exexute рабочего процесса.

Как настраивается oozie, я предполагаю, что это может быть не так гибко, чтобы обрабатывать этот конкретный запрос, но я хотел бы узнать от вас, ребята, ваши мысли.

Мои руки связаны с изменением папки/файловой структуры в HDFS. Мне нужно знать правильные вопросы, чтобы спросить парня, ответственного за генерацию входящих файлов.

Любое понимание/опыт будет оценен!

ответ

0

Из вашего запроса кажется, что у вас нет пути к каталогу, заканчивающегося на некоторый шаблон даты, который мог быть использован для запуска координатора.

Вы можете использовать комбинацию функции коммутатора и оболочки/Java действия для достижения этой цели -

1> Попросите частоту координатора, чтобы начать рабочий процесс очень низким - скажем, 5 мин.

2> Как вы упомянули, у вас есть шаблон таблицы. Предполагаю, что вы уже знаете имена таблиц, которые, как ожидается, будут в определенном каталоге. Напишите простое действие оболочки или java для рекурсивной проверки для этой директории и возврата true, если все таблицы существуют.

3> Использование переключатель особенность процесса идти дальше, если все таблицы существует, или выход: -

<decision name = "table_exists"> 
    <switch> 
     <case to = "proceed_further">${wf:actionData('check_directory')['exists'] eq 'true'} 
     </case> 
    <default to = "end" /> 
    </switch> 
</decision> 

Обратите внимание, что выше check_directory это действие, которое может быть написано на любом языке, в надлежащем порядке, чтобы вернуть значение. Пожалуйста, проверьте ooziedoc или обновите меня, если вам нужна помощь в написании этого действия.

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