AWS Athena: требует ли `msck repair table` затрат?

У меня есть данные ORC в S3, которые выглядят так:

s3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/
s3://bucket/orc/clientId=client-2/year=2017/month=3/day=16/hour=21/
s3://bucket/orc/clientId=client-3/year=2017/month=3/day=16/hour=22/

Каждый час я запускаю задание EMR, которое преобразует необработанный JSON из S3 в ORC, и записываю его в соответствии с соглашением о разделении пути (см. Выше) для приема Athena. После завершения задания EMR я запускаю msck repair table, чтобы Афина могла выбрать новые разделы.

У меня 3 связанных вопроса:

  1. Стоит ли мне запускать msck repair table в этом сценарии в AWS денег?
  2. Документы AWS говорят, что msck repair table может истекать время ожидания . Есть ли способ сделать шаг в конвейере данных, чтобы продолжить выполнение этой команды, пока она не завершится успешно?
  3. Я бы предпочел добавлять разделы в Афину вручную (так как я знаю год, месяц, день, час, над которым я работаю). Однако я не знаю clientId, потому что их может быть 1-X, и я не знаю, какие из них существуют на момент запуска EMR. Есть ли лучший способ решить эту проблему (используя Hive или что-то еще)? Я мог бы сделать вызов s3 api, чтобы получить список s3://bucket/org/ и написать код для перебора списка и добавления вручную. Я надеюсь, что есть способ попроще ...

Примечание: когда я говорю «добавить разделы вручную», я имею в виду что-то вроде этого:

ALTER TABLE <athena table> 
ADD PARTITION (clientId='client-1',year=2017,month=3,day=16,hour=20) 
location 's3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/';

person rynop    schedule 16.03.2017    source источник


Ответы (1)


AWS сообщает:

За запросы DDL или за обнаружение разделов плата не взимается.

AWS сообщает:

Плата за S3 GET действительно взимается.

Я еще не знаю, как автоматизировать msck repair table, чтобы убедиться, что он завершен.

person rynop    schedule 16.03.2017