Как Pig использует Hadoop Globs в ' load '?

Как я отмечал ранее , Pig плохо справляется с пустыми (0-байтовыми) файлами. К сожалению, существует множество способов создания этих файлов (даже в утилитах Hadoop ).

Я думал, что могу обойти эту проблему, явно загружая только файлы, которые соответствуют заданному соглашению об именах в операторе LOAD , используя синтаксис glob Hadoop . К сожалению, это, похоже, не работает, поскольку даже когда я использую глобус для фильтрации до заведомо исправных входных файлов, я все равно сталкиваюсь с ошибкой 0 байтов , упомянутой ранее .

Вот пример Пример: Предположим, у меня есть следующие файлы в S3:

  • mybucket / a / b / (0 байтов)
  • mybucket / a / b / myfile.log (> 0 байтов)
  • mybucket / a / b / yourfile.log (> 0 bytes)

Если я использую такой оператор LOAD в моем скрипте Pig:

myData = load 's3://mybucket/a/b/*.log as ( ... )

, я ожидаю, что Pig не захлебнется 0-байтовым файлом, но он все равно будет. Есть ли уловка, чтобы заставить Pig просматривать только файлы, соответствующие ожидаемому шаблону глобуса?

8
задан Community 23 May 2017 в 12:00
поделиться