Как я отмечал ранее , Pig плохо справляется с пустыми (0-байтовыми) файлами. К сожалению, существует множество способов создания этих файлов (даже в утилитах Hadoop ).
Я думал, что могу обойти эту проблему, явно загружая только файлы, которые соответствуют заданному соглашению об именах в операторе LOAD , используя синтаксис glob Hadoop . К сожалению, это, похоже, не работает, поскольку даже когда я использую глобус для фильтрации до заведомо исправных входных файлов, я все равно сталкиваюсь с ошибкой 0 байтов , упомянутой ранее .
Вот пример Пример: Предположим, у меня есть следующие файлы в S3:
Если я использую такой оператор LOAD в моем скрипте Pig:
myData = load 's3://mybucket/a/b/*.log as ( ... )
, я ожидаю, что Pig не захлебнется 0-байтовым файлом, но он все равно будет. Есть ли уловка, чтобы заставить Pig просматривать только файлы, соответствующие ожидаемому шаблону глобуса?