0Pricing
Cloud & IT Cert Prep · Урок

AWS Glue: ETL и каталог данных

Запускайте бессерверные задания ETL с помощью AWS Glue, регистрируйте схемы таблиц в каталоге данных Glue и автоматически сканируйте новые данные.

«AWS Glue: ETL и каталог данных» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Что такое AWS Glue

AWS Glue — это полностью управляемый бессерверный сервис ETL (извлечение, преобразование и загрузка). Вам не нужно выделять или управлять серверами — Glue автоматически выделяет рабочие процессы Spark или Python при запуске задания. Glue состоит из двух основных компонентов: модуля ETL для заданий преобразования данных и Data Catalogue для хранения метаданных об источниках и целевых объектах данных.

Объяснение Glue Data Catalogue

Glue Data Catalogue — это централизованное хранилище метаданных, совместимое с Apache Hive Metastore. В нем хранятся базы данных, таблицы, определения столбцов, типы данных и сведения о секциях. Такие сервисы, как Athena, Redshift Spectrum и EMR, используют один и тот же Data Catalogue, благодаря чему он служит единым источником достоверной информации о существующих данных и их расположении в S3.

# List databases in the Glue Data Catalogue
aws glue get-databases --query 'DatabaseList[*].Name'

# List tables in a database
aws glue get-tables --database-name my_db --query 'TableList[*].Name'

Glue Crawlers: автоматическое обнаружение схемы

Glue Crawler подключается к хранилищу данных (S3, JDBC, DynamoDB), выполняет выборку данных и автоматически определяет схему и структуру секций. Затем он создает или обновляет определения таблиц в Data Catalogue. Crawlers можно запускать по расписанию или по запросу. Они поддерживают инкрементальное сканирование, поэтому при последующих запусках обрабатывают только новые секции.

# Create and start a Glue Crawler via CLI
aws glue create-crawler \
  --name sales-crawler \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --database-name my_db \
  --targets '{"S3Targets": [{"Path": "s3://my-data-lake-123/landing/sales/"}]}'

aws glue start-crawler --name sales-crawler

Написание задания Glue ETL

Задание Glue ETL — это скрипт PySpark или Scala Spark, который читает данные из источника, применяет преобразования с помощью API DynamicFrame и записывает результат в целевой объект. DynamicFrames расширяют Spark DataFrames, обеспечивая гибкость схемы: они автоматически обрабатывают несогласованные типы данных и вложенный JSON. Скрипт-шаблон задания можно сгенерировать в визуальном редакторе Glue Studio.

# Minimal Glue PySpark ETL job
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

# Read from Data Catalogue table
source = glueContext.create_dynamic_frame.from_catalog(
    database='my_db', table_name='raw_sales')

# Drop null order_id rows
cleaned = Filter.apply(frame=source, f=lambda r: r['order_id'] is not None)

# Write Parquet to curated zone
glueContext.write_dynamic_frame.from_options(
    frame=cleaned,
    connection_type='s3',
    connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
    format='parquet')

Рабочие процессы Glue и DPU

Glue выделяет емкость в единицах обработки данных (DPU). Одна DPU соответствует 4 vCPU и 16 ГБ памяти. Вы выбираете тип рабочего процесса (G.1X, G.2X или G.025X для гибкой потоковой обработки Spark) и количество рабочих процессов. Для небольших заданий используйте тип задания G.025X Python Shell: он использует четверть одной DPU и очень выгоден для простых преобразований.

# Create a Glue job with G.1X workers
aws glue create-job \
  --name clean-sales \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --command '{"Name": "glueetl", "ScriptLocation": "s3://scripts/clean_sales.py", "PythonVersion": "3"}' \
  --worker-type G.1X \
  --number-of-workers 5 \
  --glue-version '4.0'

Рабочие процессы и триггеры Glue

Glue Workflow объединяет Crawlers и задания в граф зависимостей. Crawler обнаруживает новые данные, затем после завершения запускает задание, которое, в свою очередь, запускает другое, и так далее. Triggers могут быть запланированными (cron), событийными (по запросу) или условными (срабатывать при успешном или неуспешном завершении задания). Workflows предоставляют визуальный DAG для конвейера ETL без отдельного сервиса оркестрации.

# Create a schedule trigger that starts a job every night at 2 AM UTC
aws glue create-trigger \
  --name nightly-clean \
  --type SCHEDULED \
  --schedule 'cron(0 2 * * ? *)' \
  --actions '[{"JobName": "clean-sales"}]' \
  --start-on-creation

Glue Studio: визуальный конструктор ETL

Glue Studio предоставляет интерфейс перетаскивания для графического проектирования заданий ETL без ручного написания кода PySpark. Вы соединяете узлы источников (S3, таблицы Catalogue, JDBC) через узлы преобразований (фильтрация, объединение, агрегация, пользовательский Python) с узлами целевых объектов. Glue Studio автоматически создает скрипт Spark. Кроме того, он предоставляет панель мониторинга запуска задания для отслеживания состояния выполнения и показателей качества данных.

Качество данных Glue

AWS Glue Data Quality (DQDL — язык определения качества данных) позволяет писать правила для проверки данных по мере их прохождения через задание ETL. Правила могут проверять долю нулевых значений, диапазоны значений, ссылочную целостность и уникальность. Если данные не проходят проверку качества, Glue может остановить задание или направить некорректные записи в путь карантина в S3 для ручной проверки, вместо того чтобы незаметно передать поврежденные данные в зону Curated.

# DQDL rule example for Glue Data Quality
# Reject rows where order_total is negative or null
Rules = [
  IsComplete 'order_total',
  ColumnValues 'order_total' >= 0
]

Glue и другие варианты ETL

Для экзамена SAA-C03 важно знать, когда рекомендовать Glue, а когда альтернативные решения. Используйте Glue для бессерверного ETL на Spark и интеграции с Data Catalogue. Используйте AWS Data Pipeline для оркестрации старых задач перемещения данных (в основном унаследованных). Используйте Amazon EMR, когда требуется пользовательская конфигурация кластера Hadoop/Spark или длительные рабочие нагрузки. Используйте Lambda для легковесных событийных микропреобразований небольших полезных нагрузок.

JDBC и источники данных, отличные от S3

Glue может подключаться к реляционным базам данных через JDBC connections — RDS, Aurora, Redshift или локальным базам данных через Glue VPC Connection. Вы задаете подключение с URL JDBC, учетными данными из Secrets Manager и группой безопасности VPC. Затем Glue использует выделенный сетевой интерфейс, размещенный внутри подсети VPC, чтобы обращаться к частным конечным точкам баз данных без прохождения через публичный интернет.

# Create a Glue JDBC connection to RDS Aurora
aws glue create-connection \
  --connection-input '{
    "Name": "aurora-prod",
    "ConnectionType": "JDBC",
    "ConnectionProperties": {
      "JDBC_CONNECTION_URL": "jdbc:mysql://aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:3306/sales",
      "SECRET_ID": "arn:aws:secretsmanager:us-east-1:123:secret:rds-creds"
    },
    "PhysicalConnectionRequirements": {
      "SubnetId": "subnet-abc123",
      "SecurityGroupIdList": ["sg-xyz456"],
      "AvailabilityZone": "us-east-1a"
    }
  }'

Закладки: инкрементальная обработка

По умолчанию задание Glue повторно обрабатывало бы каждую запись при каждом запуске. Закладки заданий Glue отслеживают уже обработанные входные файлы, поэтому при последующих запусках обрабатываются только новые данные. Закладки необходимы для источников S3, работающих только в режиме добавления, когда в один и тот же префикс ежедневно поступают новые файлы. Включите закладки в параметрах задания с помощью --job-bookmark-option job-bookmark-enable.

# Start Glue job with bookmark enabled
aws glue start-job-run \
  --job-name clean-sales \
  --arguments '{"--job-bookmark-option": "job-bookmark-enable"}'

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили концепции AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что AWS Glue предоставляет бессерверный ETL через PySpark и API DynamicFrame, обходчики Glue автоматически обнаруживают схемы и заполняют каталог данных Data Catalogue, а закладки Glue позволяют инкрементально обрабатывать новые данные в S3. Далее мы рассмотрим Amazon Athena для выполнения бессерверных SQL-запросов непосредственно к данным в S3.

Часто задаваемые вопросы

Урок «AWS Glue: ETL и каталог данных» бесплатный?

Да — полный текст урока «AWS Glue: ETL и каталог данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «AWS Glue: ETL и каталог данных»?

Запускайте бессерверные задания ETL с помощью AWS Glue, регистрируйте схемы таблиц в каталоге данных Glue и автоматически сканируйте новые данные. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «AWS Glue: ETL и каталог данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание озера данных на S3
  2. AWS Glue: ETL и каталог данных
  3. Amazon Athena: бессерверный SQL в S3
  4. Потоки Kinesis, Firehose и аналитика в реальном времени
← Назад к Cloud & IT Cert Prep