Как повысить производительность запросов к данным s3 от Athena

Я разделил данные, хранящиеся в S3, в формате улья, подобном этому.

bucket/year=2017/month=3/date=1/filename.json
bucket/year=2017/month=3/date=2/filename1.json
bucket/year=2017/month=3/date=3/filename2.json

Каждый раздел содержит около 1 000 000 записей. Для этого в Афине я создал таблицу и разделы.

Теперь выполняется запрос от Афины

select count(*) from mts_data_1 where year='2017' and month='3' and date='1'

этому запросу требуется 1800 секунд для сканирования 1 000 000 записей.

Итак, мой вопрос: как я могу улучшить производительность этого запроса?


person Shailendra    schedule 28.03.2017    source источник
comment
Какое определение столбцов раздела?   -  person David דודו Markovitz    schedule 28.03.2017
comment
РАЗДЕЛЕНА ПО (строка года, строка месяца, строка даты)   -  person Shailendra    schedule 28.03.2017
comment
Сколько файлов и байтов данных сканирует Athena в этом запросе?   -  person James    schedule 29.03.2017
comment
Он сканирует около 1000 КБ файлов (около 250 МБ данных). В каждом файле есть одна запись JSON.   -  person Shailendra    schedule 29.03.2017


Ответы (1)


Я думаю, проблема в том, что Афине приходится читать очень много файлов с S3. 250 МБ - это не так много данных, но 1000000 файлов - это много файлов. Производительность запросов Athena значительно улучшится, если вы уменьшите количество файлов, а сжатие агрегированных файлов поможет еще больше. Сколько файлов вам нужно для однодневного раздела? Даже с разрешением в одну минуту вам потребуется менее 1500 файлов. Если текущее время запроса составляет ~ 30 минут, вы можете легко начать с гораздо меньшего.

Есть много вариантов агрегирования и сжатия ваших записей:

  • Kinesis Firehose от AWS - довольно простой способ начать решать именно такие проблемы.
  • Инструмент потоковой обработки данных, такой как Apache NiFi, предлагает более богатый набор опций преобразования, агрегации и сжатия. Я написал в блоге сообщение об использовании Apache NiFi для потоковой передачи данных в S3. для Афины, посвященной этим же вопросам.
person James    schedule 29.03.2017