Клеевой гусеничный оставляет желать лучшего. Он обещает решить множество ситуаций, но он действительно ограничен в том, что он на самом деле поддерживает. Если ваши данные хранятся в каталогах и не используют разделение в стиле Hive (например, year=2019/month=02/file.json
), они чаще всего будут портиться. Это особенно расстраивает, когда данные создаются другими продуктами AWS, такими как Kinesis Firehose, которые, похоже, могут быть вашими данными.
В зависимости от того, сколько у вас данных, я мог бы начать с простого создания неразделенной таблицы Athena, которая указывала бы на корень структуры. Разделение становится важным только после того, как ваши данные превысят несколько гигабайт или тысячи файлов.
Другая стратегия, которую вы можете использовать, заключается в добавлении лямбда-функции, которая запускается уведомлением S3 всякий раз, когда новый объект попадает в ваше ведро. Функция может посмотреть на ключ и выяснить, к какому разделу он принадлежит, и использовать Glue API, чтобы добавить этот раздел в таблицу. Добавление уже существующего раздела вернет API-ошибку, но пока ваша функция ее перехватит и проигнорирует, все будет в порядке.