Amazon Athena – интерактивный сервис запросов, позволяющий анализировать данные в Amazon S3 стандартными средствами SQL. Athena – это бессерверный сервис, поэтому не нужно управлять архитектурой, а плата начисляется только за выполненные запросы.
О сервисе —
Документация —
Начало работы —
Видео —
Содержание
Начало работы
Логинимся в консоль AWS, переходим на страницу сервиса Athena, кликаем Get started.
Если это первый запуск Athena — AWS запустит ознакомительный сценарий:
> In this tutorial we will take raw logs in text format on Amazon S3, and create a table.
Следуем указаниям помощника, создаём базу, таблицу и указываем путь к корзине, в которой будут данные для обработки:
Обратите внимание на
Use:
s3://bucketname/keyname/
- Do not use filenames, wildcards, or glob patterns for specifying file locations.
- Do not add the full HTTP notation, such as
s3.amazon.com
to the Amazon S3 bucket path.
Do not use:
s3://path_to_bucket
s3://path_to_bucket/*
s3://path_to_bucket/mySpecialFile.dat
s3://bucketname/keyname/filename.csv
s3://test-bucket.s3.amazon.com
arn:aws:s3:::bucketname/keyname
Указываем формат данных, в данном случае используем Apache logs:
Описываем содержимое базы — колонки и типы данных в них (в Wizard-е кликаем на here — Click here to fill in corresponding column names and types in the form.):
Запускаем создание таблицы:
(язык запросов см. ниже)
Получаем данные из таблицы — Preview table:
Результат:
Запросы к Data Source
Для работы с данными — используем SQL и
Документация —
Например — список баз:
Таблицы:
Результаты запросов
Документация —
Все запросы, которые мы выполняем к Athena, сохраняются в S3 корзине, по умолчанию имя aws-athena-query-results-<AWSUSERID>-<AWSREGION>/Unsaved/<YEAR>/<MONTH>/<DAY>:
Изменить корзину можно в настройках:
Пример работы
Попробуем создать реальный пример.
Далее выполним:
- добавим S3 корзину и каталог в ней, в которой будут исходные данные
- загрузим тестовый файл с данными в корзину (при использовании нескольких файлов имейте ввиду, что файлы в одном каталоге корзины должны иметь один формат)
- создадим новую базу в Athena с исходными данными из созданной корзины
- и выполним несколько запросов, что бы создать файлы с результатами в корзине
Создание S3
Создаём корзину:
В корзине создаём каталог:
Загружаем файл с тестовыми данными, например
Аналогично создаём корзину setevoy-athena-test-results
(или не создаём — она будет добавлена после обновления настроек в Anthena, см. ниже).
Athena
Перед созданием базы — проверяем содержимое файла, т.к. понадобятся колонки для будущей таблицы в новой базе:
Следовательно, в таблице будут колонки:
Name
тип stringSurname
тип stringAddress
тип stringCity
тип stringState
тип stringPostcode
тип int
В поле Location of Input Data Set потребуется URL корзины и каталога, находим их:
Копируем путь https://s3-eu-west-1.amazonaws.com/setevoy-athena-test/fold1/, переходим в Athena, создаём новую базу, и в пути указываем s3://setevoy-athena-test/fold1/:
Указываем тип данных CSV:
Создаём колонки. Для удобства — можно кликнуть на Bulk add columns и добавить всё одной строкой:
Partitions — сейчас не надо, пропускаем, жмём Create table — база и таблица готовы:
В настройка Athena — укажем новую корзину для результатов:
Выполнение запросов
И для примера — несколько запросов.
При написании запроса — можно использовать Ctrl+пробел для подстановки имён:
Выполняем запрос — Run query или Ctrl+Enter:
Проверяем содержимое корзины с результатами:
Загружаем файл, проверяем содержимое:
Аналогично используем любое форматирование.
Например — исключить строку, где поле Name
пустое:
SELECT * FROM setevoy_athena_test_db_1.addresses WHERE name <>''
А дальше полученные данные можно использовать например в Tableau сервере с помощью