AWS Glue - avro to parquet - Склеиваю работу, получая пустую рамку из каталога - PullRequest
0 голосов
/ 24 марта 2019

Я использую AWS Glue Crawler для сканирования грубых 170 ГБ avro-данных для создания таблицы каталога данных.

В данных avro есть несколько разных версий схемы, но сканеру все же удается объединить данные в одну таблицу (я включил «Группирование по совместимости данных и сходству схем - режим»).

Вот когда все становится проблематичным.

Я могу использовать Athena только для выполнения запроса SELECT COUNT(*) FROM <DB>.<TABLE> к данным - любой другой запрос вызывает следующую ошибку:

GENERIC_INTERNAL_ERROR: Unknown object inspector category: UNION

Краткая проверка Google заставляет меня поверить, что это как-то связано со схемой в файлах avro.

Обычно, это то, на чем будут сосредоточены мои усилия, НО: я был в состоянии выполнить эту же процедуру (AVRO -> Crawler -> Glue job -> PARQUET) раньше, с меньшим набором данных avro (50 ГБ), имеющим та же проблема (только возможность выполнить запрос подсчета). Двигаемся дальше.

Задание преобразования ранее занимало около часа. Теперь при выполнении того же задания для данных объемом 170 ГБ задание завершается через минуту, потому что glueContext.create_dynamic_frame.from_catalog теперь возвращает пустой кадр - без ошибок, без ничего. Путаница реальна, так как я могу выполнить запрос COUNT в Афине для той же таблицы, которую использует задание, возвращая количество объектов 520M.

Кто-нибудь знает, в чем может быть проблема?

Пара вещей, которые могут иметь отношение к делу:

  • Запрос COUNT возвращает 520M, но recordCount в свойствах таблицы говорит о 170M записей.
  • Данные хранятся в файлах размером 300 КБ .avro размером 2–30 МБ
  • Да, сканер указывает на папку со всеми файлами, а не на файл (обычная поисковая система).
  • Предыдущая попытка с меньшим набором данных (50 ГБ) была на 100% успешной - я мог отсканировать данные паркета и запросить их с помощью Athena (протестировал много разных запросов, все работали)
...