Amazon Athena не возвращает последние данные, когда разделы загружены частично - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть определенная секционированная таблица, которая указывает на сегмент S3, который использует разбиение даты.У меня есть данные за последние 3 месяца в ведре S3.Я загрузил разделы за 1 месяц.Однако я не загружал данные в разделе с помощью команд msck repair table или alter table в течение последних 2 месяцев.Когда я пытаюсь выполнить запрос к таблице, данные за последние 2 месяца не загружаются с S3, в результатах запроса отображаются только самые последние секционированные данные.Это ожидается?Если да, то почему?

Я попытался создать другую секционированную таблицу для того же сегмента s3, но на этот раз я не загрузил ни один из разделов.Когда я запрашиваю эту таблицу, я получаю самые последние записи.

1 Ответ

1 голос
/ 28 сентября 2019

Да, ожидается.

Афина использует метаданные для распознавания данных в S3.Наиболее важными метаданными, используемыми для обнаружения данных в S3, является раздел.Афина хранит информацию обо всех разделах в метаданных.Используя эту информацию о разделе, он достигает соответствующей папки в S3 для извлечения данных.

  1. Если вы добавите больше файлов в тот же раздел: Если раздел уже добавлен в метаданные athena, все новые файлы будут обнаружены автоматически, потому что athena считывает все файлы из папки в S3, используя метаданные раздела и местоположение s3..
  2. Если вы добавляете файлы в новый раздел: если раздел не находится в метаданных athena, Athana не знает, как найти соответствующую папку в S3.Следовательно, он не обращается к данным из этой папки.

Существует три способа распознавания новых разделов: 1. Запустите сканер Glue поверх корзины S3, и он обновит метаданные раздела.2. Используйте команду alter table в Athana для добавления новых разделов. 3. Используйте msck repair table, если схема вашего раздела отличается от схемы таблицы.

...