Я использую AWS Glue Crawler для сканирования примерно 170 ГБ данных avro для создания таблицы каталога данных.
В данных avro есть несколько разных версий схемы, но поисковому роботу все же удается объединить данные в единую таблицу (я включил «Группировать по совместимости данных и сходству схемы - режим»).
Вот когда возникают проблемы.
Я могу использовать Athena только для выполнения SELECT COUNT(*) FROM <DB>.<TABLE>
запроса к данным - любой другой запрос вызывает следующую ошибку:
GENERIC_INTERNAL_ERROR: Unknown object inspector category: UNION
Краткая проверка в Google заставляет меня поверить, что это как-то связано со схемой в файлах avro.
Обычно именно здесь я сосредоточиваю свои усилия, НО: я мог выполнить ту же самую процедуру (AVRO -> сканер -> Склейка -> ПАРКЕТ) раньше, с меньшим набором данных avro (50 ГБ), имеющим ту же проблему. (только возможность выполнить подсчетный запрос). Двигаемся дальше.
Раньше преобразование занимало около часа. Теперь при выполнении того же задания с данными размером 170 ГБ задание завершается через минуту, потому что glueContext.create_dynamic_frame.from_catalog
теперь возвращает пустой фрейм - ни ошибок, ни ничего. Путаница реальна, поскольку я могу запустить COUNT-запрос в Athena для той же таблицы, что и задание, и вернуть количество объектов 520M.
У кого-нибудь есть идеи, в чем может быть проблема?
Несколько важных моментов:
- Запрос COUNT возвращает 520M, но
recordCount
в свойствах таблицы указывает 170M записей. - Данные хранятся в файлах 300k .avro размером от 2MB до 30MB.
- Да, сканер указывает на папку со всеми файлами, а не на файл (обычная ошибка поискового робота).
- Предыдущая попытка с меньшим набором данных (50 ГБ) была на 100% успешной - я мог сканировать данные паркета и запрашивать их с помощью Athena (проверял много разных запросов, все работали)