Я только начинаю работать с Athena с целью запрашивать события управления CloudTrail из нескольких учетных записей.
Я настраиваю первую таблицу, следуя этому руководству:
https://cloudonaut.io/analyzing-cloudtrail-with-athena/
Из-за структуры папок (ключевого префикса) событий CloudTrail он разделен на:
PARTITIONED BY (account string, region string, year string, month string, day, string)
Затем я создаю другую таблицу с CATS, чтобы преобразовать JSON в ORC и сохранить в другом ведре, следуя этому руководству:
Мое незнание баз данных, вероятно, делает меня излишне жадным. Я хотел бы пропустить регион при настройке разделов ведра. Я не могу придумать причину, по которой я хотел бы запрашивать только один конкретный регион для каждой учетной записи для событий управления и не хотел бы тридцать файлов для каждой учетной записи в день, если бы у меня было три.
Вот что я пытаюсь запустить:
CREATE TABLE cloudtrail_partitioned_bucketed
WITH (
partitioned_by = ARRAY['account','year','month','day'],
bucketed_by = ARRAY['eventname'],
bucket_count = 3,
format = 'orc',
external_location = 's3://bucket/athena/out/'
)
AS
SELECT
*
FROM cloudtrail_logs
Я получаю сообщение об ошибке:
HIVE_COLUMN_ORDER_MISMATCH: Partition keys must be the last columns in the table and in the same order as the table properties
Конечно, если я просто использую значения по порядку, независимо от того, какие значения он работает (учетная запись, регион / год, месяц, день). Я понимаю, что ключи разделов не являются динамическими, но могу ли я просто удалить регион ключа раздела для преобразования орков? У меня есть awsregion из самих событий.
Любые отзывы о том, насколько это плохая идея, будут приветствоваться. У меня в голове есть идея запланировать запуск одного раза в день, конвертирующий дни событий CloudTrail в каждой учетной записи в ORC в другое ведро для использования с запросами Афины. События CloudTrail будут архивироваться раньше, и все запросы, выполняемые пользователями с Athena, будут выполняться с меньшими файлами ORC.
Учитывая количество учетных записей, я хотел бы уменьшить количество разделов, необходимых при использовании региона в ключах разделов.