Как AWS Athena реагирует на изменения схемы в файлах S3?

Что произойдет, если после создания таблицы в AWS Athena для файлов на S3 структура файлов на S3 изменится?

Например:

  1. Если файлы ранее имели 5 столбцов при создании таблицы, а позже новые файлы стали получать еще 1 столбец: а) в конце? б) между ними?

  2. Что происходит, когда некоторые столбцы недоступны в новых файлах?

  3. Что произойдет, если столбцы останутся прежними, но порядок столбцов изменится?

  4. Можем ли мы изменить таблицы Athena, чтобы приспособиться к этим изменениям?


person Sarang    schedule 06.07.2017    source источник


Ответы (2)


1 - Athena не является решением NoSQL. Это также не динамическая схема. Если вы измените схему, все ваши файлы в определенной папке должны отражать это изменение. Athena не будет волшебным образом обновляться, чтобы включить его.

2 - Тогда это будет проблемой, и он сломается. Вы должны включить NULL или ,,, чтобы все было в порядке.

3 - Афина берет его по порядку столбцов. Не по имени, правда. Если ваши порядки столбцов изменятся, они, вероятно, сломаются (разные типы).

4 - Да. Вы всегда можете легко воссоздать таблицы Athena, удалив ее и создав новую.

Если у вас есть файлы переменной длины, их следует вставлять в разные папки, чтобы каждая папка представляла одну согласованную схему. Затем вы можете объединить это позже в Athena с union или подобным, чтобы создать сжатую, упрощенную таблицу, к которой вы можете применить согласованную схему.

person Henry    schedule 06.07.2017
comment
4. Удаление и воссоздание не меняет. Я полагаю, вы хотели сказать «нет». - person Sarang; 07.07.2017
comment
Истинный. Честная оценка. Поскольку все файлы таблицы должны соответствовать схеме верхнего уровня, само по себе не имеет смысла изменять таблицу и добавлять новые столбцы, так как это будет означать, что в базовых данных изначально должны быть эти столбцы. - person Henry; 07.07.2017

Это зависит от используемого вами формата файлов и настроек (если схема — по порядку полей или по имени поля). Все подробности здесь: https://docs.aws.amazon.com/athena/latest/ug/handling-schema-updates-chapter.html Обратите внимание на то, что если данные вложены или находятся в массивах, это полностью нарушит ваши данные, цитируя с этой страницы:

Обновления схемы, описанные в этом разделе, не работают с таблицами со сложными или вложенными типами данных, такими как массивы и структуры.

person ronhash    schedule 01.08.2018