AWS Glue - это сервис ETL, который позволяет манипулировать данными и управлять конвейерами данных.
В этом конкретном примере давайте посмотрим, как с помощью AWS Glue можно загрузить CSV-файл из корзины S3 в Glue, а затем выполнить SQL-запросы к этим данным в Athena.
Вот CSV-файл в корзине S3, как показано ниже - сам набор данных доступен в репозитории GitHub, на который есть ссылка в конце этой статьи.
Настройка сканера в AWS Glue
Сканер используется для извлечения данных из источника, анализа этих данных и затем обеспечения соответствия данных определенной схеме или структуре, которая определяет тип данных для каждой переменной в таблице.
Сканер определен с хранилищем данных, ролью IAM и установленным расписанием.
Сканеру потребуется некоторое время, чтобы извлечь таблицу, в зависимости от размера ваших данных. Здесь поисковый робот должен запускаться по запросу.
Однако также можно настроить поисковый робот для работы по определенному расписанию.
Это особенно важно, когда данные в корзине S3 обновляются или изменяются через определенные промежутки времени - необходимо следить за тем, чтобы данные в Glue оставались актуальными.
Таблица теперь присутствует в AWS Glue. Здесь схема определяется автоматически.
Однако схему также можно отредактировать, выбрав Edit Schema, а затем вручную определив типы данных для каждой переменной:
Запросы в Афине
Теперь, когда таблица сформирована в AWS Glue, давайте попробуем выполнить несколько запросов!
Athena - это сервис AWS, который позволяет выполнять стандартные SQL-запросы к данным в S3. Поскольку схема уже создана в Glue и таблица загружена в базу данных, все, что нам просто нужно сделать, это запросить наши данные.
Конкретный анализируемый набор данных - это данные о бронировании отелей.
Давайте воспользуемся некоторыми SQL-запросами, чтобы сделать следующее:
- Выберите все столбцы в таблице, где все записи в столбце Страна начинаются с буквы P.
- Рассчитайте среднее время выполнения заказа, где Country = «PRT» (Португалия).
- Вычислите средние значения ADR, если Страна = «GBR» (Великобритания), а сегмент рынка относится к прямой категории.
- Наконец, давайте закажем стол по стране, типу зарезервированного номера и типу клиента.
Запрос 1
select * from table where country like ‘P%’;
Запрос 2
select avg(leadtime) from table where country=’PRT’;
Запрос 3
select avg(adr) from table where country=’GBR’ and marketsegment=’Direct’;
Запрос 4
select * from table order by country, reservedroomtype, customertype;
Эти запросы также можно сохранить для дальнейшего использования. Сохраним запрос 3 в качестве примера.
Вывод
В этом примере вы видели:
- Как сканировать данные в ведре S3 с помощью Glue
- Редактирование схемы таблицы в Glue
- Выполнение SQL-запросов с помощью Athena
Большое спасибо за ваше время, и соответствующий набор данных доступен в репозитории MGCodesandStats GitHub.
Вы также можете найти другие мои материалы по науке о данных на michael-grogan.com.
Заявление об ограничении ответственности: эта статья написана на условиях «как есть» без каких-либо гарантий. Он был написан с целью предоставить обзор концепций науки о данных и никоим образом не должен интерпретироваться как профессиональный совет.