Как вы справляетесь с пустыми или отсутствующими входными файлами в Apache Pig? - PullRequest
6 голосов
/ 21 апреля 2011

Наш рабочий процесс использует кластер упругого преобразования AWS для запуска серии заданий Pig для манипулирования большим объемом данных в агрегированных отчетах.К сожалению, входные данные потенциально противоречивы и могут привести к тому, что ни входные файлы, ни 0-байтовые файлы не будут переданы конвейеру или даже созданы на некоторых этапах конвейера.

Во время оператора LOAD происходит сбой Pigвпечатляюще, если он либо не находит входные файлы, либо любой из входных файлов занимает 0 байт.

Есть ли хороший способ обойти это (надеюсь, в конфигурации Pig или сценарии или конфигурации кластера Hadoop,без написания пользовательского загрузчика ...)?

(Так как мы используем AWS упругую карту уменьшения, мы застряли с Pig 0.6.0 и Hadoop 0.20.)

Ответы [ 2 ]

1 голос
/ 26 января 2015

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

Оболочка проверяет наличие входного файла и собирает окончательный сценарий PIG из фрагментов.

Затем выполняется последний сценарий свиньи. Я знаю, что это немного похоже на подход Рубе Голдберга, но пока все хорошо. : -)

1 голос
/ 21 апреля 2011

(Для потомков, решение, соответствующее подпарам, которое мы придумали:)

Чтобы справиться с проблемой 0-байтов, мы обнаружили, что можем обнаружить ситуацию и вместо этого вставить файлс одной новой строки.Это вызывает сообщение вроде:

Encountered Warning ACCESSING_NON_EXISTENT_FIELD 13 time(s).

, но, по крайней мере, Pig не падает с исключением.

В качестве альтернативы, мы могли бы создать строку с соответствующим количеством символов '\t' для этого файла, что позволило бы избежать предупреждения, но это вставило бы мусор в данные, которые мы затем должны были бы отфильтровать.

Эти же идеи можно использовать для решения условия отсутствия входных файлов путем создания фиктивного файла, но он имеет те же недостатки, что и перечисленные выше.

...