Amazon DEA-C01: Трансформация и обработка данных — Руководство по подготовке
Часть Amazon Data Engineer Associate DEA-C01 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Этот раздел охватывает сервисы и паттерны AWS, используемые для очистки, преобразования и подготовки данных для аналитики и машинного обучения в больших масштабах. Основное внимание уделяется выбору подходящих вычислительных ресурсов и инструментов (Glue, Lambda, EMR, DataBrew) в зависимости от объема данных, требований к задержке и ограничений по стоимости. Понимание ограничений сервисов, параметров конфигурации заданий и взаимодействия форматов данных с каталогами является ключевым для построения надежных инкрементальных конвейеров данных.
ETL-задания AWS Glue (Spark и Python shell)
Задания Glue Spark — это основной выбор для крупномасштабных, распределенных ETL-процессов: они выполняются на управляемом AWS Glue кластере Apache Spark, используют GlueContext и оперируют типами DynamicFrame и Spark DataFrame. Настраиваются через консоль или CLI с указанием типа задания (job type) «glueetl», типа воркера (workerType) (G.1X, G.2X, G.4X) и количества воркеров (NumberOfWorkers); запускаются через CLI:
undefined
. Используйте API DynamicFrame (create_dynamic_frame.from_options, apply_mapping), когда вам нужны гибкие к схеме преобразования, встроенные трансформации (Relationalize, Unnest) и автоматическая обработка полуструктурированных данных; преобразуйте в Spark DataFrame с помощью dyf.toDF(), когда вам нужен Spark SQL, более производительные соединения или пользовательские функции (UDF).
Задания Glue Python shell используют тип задания «pythonshell» для легковесных скриптов и задач уровня управления (control-plane). Они используют один DPU (1 DPU) с ограниченным параллелизмом и лучше всего подходят для манипуляций с небольшими файлами, обновления метаданных или оркестрации. Настраиваются с помощью
undefined
и запускаются командой
undefined
. Обратите внимание, что задания Python shell ограничены одним DPU — для больших наборов данных используйте Spark.
Закладки (bookmarks) в заданиях Glue обеспечивают инкрементальную обработку, отслеживая ранее обработанные объекты и партиции в S3. Включите закладки в конфигурации задания или при его запуске:
undefined
. Закладки работают для источников на базе S3 при использовании встроенных коннекторов; источники JDBC по умолчанию не поддерживают закладки и требуют реализации кастомных водяных знаков (watermarking) или хранения состояния.
Glue теперь поддерживает ExecutionClass FLEX для оптимизированных по стоимости, несрочных заданий. Запустите задание с
undefined
, чтобы позволить Glue запланировать его выполнение по более низкой цене с менее строгими SLA по времени запуска. Используйте FLEX для пакетных дозагрузок данных (backfills) и рабочих нагрузок, нечувствительных к задержкам; используйте STANDARD для предсказуемой задержки.
Критерии выбора — краткое сравнение:
-
DynamicFrame vs Spark DataFrame
- Используйте DynamicFrame при приеме полуструктурированных данных JSON/Parquet с дрейфом схемы, применяя
apply_mapping,relationalizeи другие преобразования Glue. - Используйте Spark DataFrame, когда вам нужна производительность Spark SQL, сложные соединения, оконные функции и сторонние библиотеки Spark.
- Конвертируйте между ними с помощью
DynamicFrame.fromDF(df, glueContext, "name")иdyf.toDF().
- Используйте DynamicFrame при приеме полуструктурированных данных JSON/Parquet с дрейфом схемы, применяя
-
Glue Spark vs Python shell
- Выбирайте Spark для многоузловых, распределенных ETL-процессов на больших наборах данных и при масштабной интеграции с Glue Catalog.
- Выбирайте Python shell для небольших, быстрых задач или шагов оркестрации, которые укладываются в рамки 1 DPU.
AWS Lambda для легковесных преобразований
Lambda идеально подходит для управляемых событиями, низколатентных, легковесных преобразований, которые напрямую запускаются событиями в S3, Kinesis или EventBridge. Типичные сценарии использования включают валидацию файлов, извлечение метаданных, конвертацию JSON в CSV для небольших файлов или потоковую обработку записей. Настройте память и таймаут с помощью
undefined
. Можно настроить Provisioned Concurrency с помощью
undefined
, чтобы смягчить проблему «холодных стартов» для чувствительных к задержкам потоковых конвейеров.
Помните об ограничениях Lambda при обработке данных: максимальное время выполнения 15 минут, 10 ГБ памяти (10 240 МБ) и всего 512 МБ временного хранилища в /tmp. Для обработки файлов большего размера используйте цепочки вызовов (разделяя файлы), выгружайте данные в S3 и запускайте задание Glue или EMR, либо используйте многоэтапную обработку с помощью AWS Step Functions. Используйте переменные окружения для небольшой конфигурации и политики IAM-ролей, которые строго следуют принципу наименьших привилегий.
Критерии выбора — когда использовать Lambda:
- Используйте Lambda, когда обработка одного вызова укладывается в ограничения (15 минут, 10 ГБ памяти, 512 МБ в
/tmp) и когда требуется задержка от долей секунды до нескольких секунд. - Избегайте использования Lambda для больших, длительных или требующих много памяти преобразований; вместо этого используйте Glue Spark или EMR.
Amazon EMR для крупномасштабной обработки
EMR — это основной выбор для настраиваемой, крупномасштабной обработки больших данных (Spark, Hadoop, Presto, Flink), когда требуется контроль на уровне кластера, пользовательские начальные загрузочные действия (bootstrap actions) или специализированные библиотеки. Создавайте кластеры через CLI с помощью
undefined
и выбирайте либо
undefined
, либо
undefined
. Флоты инстансов (instance fleets) предоставляют гибкое сочетание типов инстансов и комбинации спотовых/по требованию инстансов; группы инстансов (instance groups) — это более простые группы фиксированного размера.
Паттерны использования кластеров EMR:
- Кратковременные кластеры: запускаются с флагом
undefined
и передают шаги (steps), чтобы кластер завершил работу после их выполнения. Хорошо подходит для контроля затрат, но эфемерное состояние HDFS и локальное состояние будут потеряны при завершении работы.
- Долгоживущие кластеры: не завершаются автоматически; используются для интерактивных рабочих нагрузок, постоянного хранилища HDFS или когда множество небольших заданий выигрывают от «прогрева» JVM. Сохраняйте критически важные данные в S3 или в хранилище Hadoop на базе EBS, если предполагается завершение работы кластера.
Примеры конфигурации:
- CLI для группы инстансов:
undefined
- CLI для флота инстансов использует
undefined
с распределением OnDemand/Spot и несколькими типами инстансов для отказоустойчивости и оптимизации затрат.
Используйте EMR, когда вам нужен полный контроль над компонентами экосистемы Hadoop, пользовательские bootstrap-скрипты или постоянное хранилище HDFS для промежуточных данных; в противном случае Glue Spark проще для управляемых ETL-процессов на Spark, которые интегрируются с Glue Data Catalog.
Glue DataBrew и визуальные преобразования
Glue DataBrew — это визуальный инструмент без кода/с минимальным кодом для профилирования, очистки и преобразования данных, предназначенный для аналитиков данных и инженеров, работающих в интерактивном режиме. Создайте набор данных из S3 или Glue Catalog, соберите «рецепт» преобразований в консоли, просмотрите результат на выборке и запустите задания для применения рецептов в большом масштабе. Планируйте задания DataBrew или запускайте их через CLI с помощью
undefined
.
DataBrew оптимизирован для задач подготовки данных, таких как стандартизация, дедупликация, преобразование типов и преобразования на уровне столбцов с помощью встроенных функций. Он интегрируется с Glue Catalog и записывает результаты в S3. Выбирайте DataBrew, когда бизнес-пользователям требуется самостоятельная очистка и быстрое профилирование; для сложной логики преобразований, комплексных соединений или очень больших наборов данных предпочтительнее использовать Glue Spark или EMR.
Сравнение визуальных и кодовых преобразований:
- Glue DataBrew
- Плюсы: быстрое профилирование, работа на основе «рецептов», пользователи без навыков программирования могут создавать конвейеры, встроенное планирование.
- Минусы: не подходит для очень больших или очень сложных распределенных соединений и пользовательских библиотек.
- Glue Spark / EMR
- Плюсы: полный программный контроль, обработка огромных наборов данных, поддержка сторонних библиотек.
- Минусы: требует навыков разработчика и больше настроек.
Распространенные ошибки и критерии выбора
- Предположение, что закладки заданий Glue (job bookmarks) работают для JDBC-источников — закладки отслеживают только состояние объектов/разделов S3; для инкрементальных загрузок из JDBC используйте столбцы «водяных знаков» (watermark columns), технологию change-data-capture или храните прогресс в DynamoDB/S3.
- Отношение к кратковременным кластерам EMR как к системам с состоянием — кратковременные кластеры завершают работу после выполнения шагов и теряют данные в HDFS; сохраняйте промежуточные данные в S3 или используйте тома EBS для долговременного хранения.
- Игнорирование «холодных стартов» Lambda в потоковых конвейерах — холодные старты увеличивают задержку; смягчайте эффект с помощью provisioned concurrency для критически важных путей или используйте долгоживущие вычислительные ресурсы для строгих требований к низкой задержке.
- Выполнение больших преобразований в Glue Python shell — задания Python shell ограничены 1 DPU; для больших наборов данных используйте задания Glue Spark с соответствующими
undefined
/
undefined
.
- Неправильная настройка типов инстансов EMR: выбирайте флоты инстансов для экономии и гибкости при использовании спотовых инстансов; используйте группы инстансов, когда вам нужен предсказуемый состав инстансов.
- Чрезмерное использование Glue Flex для срочных рабочих нагрузок — FLEX снижает стоимость, но может задерживать время запуска; используйте STANDARD для предсказуемого времени запуска и выполнения.
Практическая задача: Пример использования
Компания AcmeRetail обрабатывает ночные файлы Parquet с данными о кликах (clickstream) в единую таблицу активности клиентов и хочет внедрить инкрементальную обработку, чтобы избежать повторной обработки данных за месяцы, сохраняя при этом низкие затраты на несрочные дозагрузки данных (backfills).
- Используйте секционированную структуру в S3 (year=/month=/day=) и зарегистрируйте набор данных в Glue Data Catalog.
- Создайте задание Glue Spark (
undefined
), которое читает данные с помощью
undefined
для гибкости схемы, применяет сопоставления, преобразует в DataFrame для сложных соединений и записывает секционированный Parquet обратно в S3. 3. Включите закладки заданий Glue (
undefined
) для ночных запусков, чтобы обрабатывать только новые разделы; для источников обогащения данных из JDBC реализуйте столбцы «водяных знаков», сохраняемые в DynamoDB, для отслеживания максимальной обработанной временной метки. 4. Для рутинных ночных запусков используйте
undefined
; для несрочной повторной обработки исторических данных запускайте задания с
undefined
для экономии средств. 5. Отслеживайте с помощью метрик CloudWatch и настраивайте оповещения о сбоях заданий; для очень больших масштабов или использования пользовательских библиотек рассмотрите возможность использования кратковременных кластеров EMR, которые записывают промежуточные результаты в S3 и автоматически завершают работу.
Обоснование: Этот подход использует управляемый Spark в Glue для масштабируемых преобразований и DynamicFrames для полуструктурированных входных данных, применяет закладки заданий для инкрементальной обработки в S3 и использует FLEX для снижения затрат на дозагрузки, обеспечивая экономичность, надежность и простоту эксплуатации.
← Каталогизация данных и управление метаданными · Все домены · Оркестрация данных и управление рабочими процессами →
Отработать эти вопросы → · Тесты на время на ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Сдайте экзамен →