Обновление AWS Athena meta: клей Гусеничный против MSCK Repair Table - PullRequest
2 голосов
/ 23 мая 2019

Когда новый раздел добавляется в таблицу Athena, мы можем использовать либо Glue Crawler, либо MSCK REPAIR TABLE для обновления метаинформации.Какова стоимость для них?Какой из них предпочтительнее?

Ответы [ 2 ]

3 голосов
/ 23 мая 2019
Команда

MSCK REPAIR TABLE требует, чтобы ваш ключ S3 включал схему секционирования, как указано здесь . Если ваш ключ S3 не включает схему разделов, команда MSCK REPAIR TABLE возвратит пропущенные разделы, но вам все равно придется добавить их. Еще одно отличие состоит в том, что команда MSCK REPAIR TABLE может отключиться через 30 минут (по умолчанию Афина, запрос времени), пока сканер клея не будет.

Информация о ценах:

Гусеничный клей :

У AWS Glue Crawler есть почасовая ставка для обнаружения данных и заполнения каталога данных AWS Glue. С вас взимается почасовая ставка, основанная на количестве блоков обработки данных (или DPU), используемых для запуска вашего сканера. Один блок обработки данных (DPU) обеспечивает 4 виртуальных ЦП и 16 ГБ памяти. Вам выставляется счет с шагом в 1 секунду, округленным до ближайшей секунды, с минимальной продолжительностью 10 минут для каждого сканирования. Использование сканеров клея AWS является необязательным, и вы можете заполнить каталог данных клея AWS напрямую через API.

Цены

Для всех регионов AWS, где доступен клей AWS: 0,44 долл. США за час DPU, тарифицируется за секунду с минимальным 10-минутным пробегом гусеничного хода

Афина

Плата за операторы языка определения данных (DDL), такие как CREATE / ALTER / DROP TABLE, операторы для управления разделами или неудачные запросы, не взимается.

Однако в дополнение к обеим этим командам вы по-прежнему будете нести расходы S3. Справка: AWS Афина: расходы на ремонтную таблицу msck составляют

Мое мнение: после добавления новых данных лучше всего самостоятельно управлять разделом.

'ALTER TABLE database.table ADD
PARTITION (partition_name='PartitionValue') location 's3://bucket/path/partition'

Если вы будете вынуждены использовать Клей или Афину, я бы оценил, какой путь лучше подойдет для вашего процесса. Командой MSCK REPAIR TABLE может быть проще управлять, но вы можете столкнуться с проблемами, если у вас много данных в разделах или они не разделены правильно. Кроме того, у вас должен быть способ автоматизировать запуск команды. Клеевые гусеницы можно настроить с помощью триггеров.

1 голос
/ 05 июня 2019

Я согласен с добавлением разделов вручную.Вы можете сделать это с помощью запроса Athena (ALTER TABLE ... ADD PARTITION () ...), как в ответе @KiteCoder, или вы можете сделать это напрямую через Glue API.

Вызов API Glue является более многословным, но также более сложным 'структурированы.Вызов Athena, очевидно, является запросом SQL, и я знаю, сколько людей презирают написание кода, который динамически генерирует SQL.

Конкретная операция - CreatePartition.Для этого требуется объект с именем StorageDescriptor, который определяет все столбцы и типы данных в этой таблице, но для существующей таблицы вы можете извлечь эту структуру из операции GetTable .

...