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-запросами, чтобы сделать следующее:

  1. Выберите все столбцы в таблице, где все записи в столбце Страна начинаются с буквы P.
  2. Рассчитайте среднее время выполнения заказа, где Country = «PRT» (Португалия).
  3. Вычислите средние значения ADR, если Страна = «GBR» (Великобритания), а сегмент рынка относится к прямой категории.
  4. Наконец, давайте закажем стол по стране, типу зарезервированного номера и типу клиента.

Запрос 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.

Заявление об ограничении ответственности: эта статья написана на условиях «как есть» без каких-либо гарантий. Он был написан с целью предоставить обзор концепций науки о данных и никоим образом не должен интерпретироваться как профессиональный совет.