Amazon DEA-C01: 数据转换和处理 — 学习指南

属于 Amazon Data Engineer Associate DEA-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.

该领域涵盖了用于大规模清理、转换和准备数据以进行分析和机器学习的 AWS 服务和模式。它侧重于根据数据量、延迟要求和成本限制选择合适的计算和工具(Glue、Lambda、EMR、DataBrew)。理解服务限制、作业配置选项以及数据格式和目录如何交互,对于构建可靠的增量管道至关重要。

AWS Glue ETL 作业 (Spark 和 Python shell)

Glue Spark 作业是大规模、分布式 ETL 的首选:它们在 AWS Glue 托管的 Apache Spark 上运行,使用 GlueContext,并操作 DynamicFrame 和 Spark DataFrame 类型。通过控制台或 CLI 使用作业类型 “glueetl”、workerType (G.1X, G.2X, G.4X) 和 NumberOfWorkers 进行配置;使用 CLI 启动:aws glue start-job-run –job-name my-spark-job –arguments ‘–execution-class=STANDARD’。当需要模式灵活的转换、内置转换(Relationalize、Unnest)以及自动处理半结构化数据时,请使用 DynamicFrame API(create_dynamic_frame.from_options、apply_mapping);当需要 Spark SQL、更高性能的连接或自定义 UDF 时,请使用 dyf.toDF() 将其转换为 Spark DataFrame。

Glue Python shell 作业使用作业类型 “pythonshell” 来执行轻量级脚本和控制平面任务。它们是单 DPU(1 DPU),并行性有限,最适合小型文件操作、元数据更新或编排。通过 aws glue create-job –name my-pyjob –command ‘{“Name”:“pythonshell”,“PythonVersion”:“3”}’ 进行配置,并使用 aws glue start-job-run 启动。请注意,Python shell 作业有 1 DPU 的限制——对于大型数据集,请使用 Spark。

Glue 作业书签通过跟踪先前处理过的 S3 对象和分区来实现增量处理。在作业配置中或启动运行时启用书签:aws glue start-job-run –job-name my-job –job-bookmark-option job-bookmark-enable。书签适用于使用内置连接器的基于 S3 的源;JDBC 源默认不支持书签,需要自定义水印或状态存储。

Glue 现在支持 ExecutionClass FLEX,用于成本优化、非紧急的作业。使用 aws glue start-job-run –job-name my-job –execution-class FLEX 启动,以允许 Glue 以更低的成本和更宽松的启动时间 SLA 来调度作业。将 FLEX 用于批量回填和非延迟敏感的工作负载;将 STANDARD 用于可预测的延迟。

决策标准 — 快速比较:

AWS Lambda 用于轻量级转换

Lambda 非常适合由 S3、Kinesis 或 EventBridge 直接触发的事件驱动、低延迟、轻量级的转换。典型用途包括文件验证、元数据提取、小文件的 JSON 到 CSV 转换,或记录的流式处理。使用 aws lambda update-function-configuration –function-name myFunc –memory-size 2048 –timeout 300 配置内存和超时。可以使用 aws lambda put-provisioned-concurrency-config 设置预置并发,以缓解延迟敏感的流式管道的冷启动问题。

请注意 Lambda 用于数据处理的限制:最大执行时间 15 分钟、内存 10 GB (10,240 MB),以及仅 512 MB 的临时 /tmp 存储。对于更大的文件处理,可以采用链式处理(拆分文件)、暂存到 S3 并调用 Glue 或 EMR 作业,或使用 AWS Step Functions 进行多部分处理。使用环境变量进行少量配置,并使用严格授予最小权限的 IAM 角色策略。

决策标准 — 何时选择 Lambda:

用于大规模处理的 Amazon EMR

当需要集群级别的控制、自定义引导操作或专用库时,EMR 是进行可定制化、大规模大数据处理(Spark、Hadoop、Presto、Flink)的首选方案。可通过 CLI 使用 aws emr create-cluster 创建集群,并选择 --instance-groups--instance-fleets。实例舰队(Instance fleets)提供了灵活的实例类型组合以及 Spot 实例和按需实例的搭配;实例组(instance groups)是更简单的固定大小分组。

需要考虑的 EMR 集群模式:

配置示例:

undefined

当您需要对 Hadoop 生态系统组件的完全控制、自定义引导脚本或用于存储中间数据的持久化 HDFS 时,请使用 EMR;否则,对于与 Glue Data Catalog 集成的托管式 Spark ETL 而言,Glue Spark 更为简单。

Glue DataBrew 与可视化转换

Glue DataBrew 是一款可视化的、无代码/低代码工具,用于数据探查、清洗和转换,其目标用户是需要进行交互式操作的数据分析师和工程师。您可以从 S3 或 Glue Catalog 创建数据集,在控制台中构建一个转换“配方”(recipe),在样本数据上进行预览,然后运行作业以大规模应用该配方。可以调度 DataBrew 作业,或通过 CLI 使用 aws databrew start-job-run --name my-databrew-job 来运行它们。

DataBrew 针对数据准备任务进行了优化,例如标准化、去重、类型转换以及使用内置函数进行列级转换。它与 Glue Catalog 集成,并将输出写入 S3。当业务用户需要自助式数据清洗和快速探查时,应选择 DataBrew;对于繁重的转换逻辑、复杂的联接或非常大的数据集,则首选 Glue Spark 或 EMR。

可视化转换与基于代码的转换之比较:

常见陷阱与决策标准

实践问题:用例场景

AcmeRetail 公司需要处理夜间的点击流 Parquet 文件,将其整合到一个统一的客户活动表中,并希望采用增量处理方式,以避免重处理数月的数据,同时为非紧急的回填任务保持低成本。

  1. 使用 S3 分区布局(例如 year=/month=/day=),并在 Glue Data Catalog 中注册数据集。
  2. 创建一个 Glue Spark 作业 (glueetl),该作业使用 DynamicFrame.from_catalog 读取数据以获得模式灵活性,应用映射,为进行复杂联接而转换为 DataFrame,然后将分区后的 Parquet 写回 S3。
  3. 为夜间运行启用 Glue 作业书签 (job-bookmark-enable),以便只处理新的分区;对于 JDBC 数据扩充源,应实现持久化在 DynamoDB 中的水印列,以跟踪已处理的最大时间戳。
  4. 对于常规的夜间运行,使用 ExecutionClass=STANDARD;对于非紧急的历史数据重处理,提交运行时使用 --execution-class FLEX 以节省成本。
  5. 使用 CloudWatch 指标进行监控,并为作业失败设置告警;对于超大规模或需要自定义库的场景,可考虑使用 EMR 瞬态集群,该集群将中间结果写入 S3 并自动终止。

基本原理:该方法利用 Glue 的托管式 Spark 进行可扩展的转换,使用 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.

通过考试 →

浏览 Amazon →

Related guides

一体化访问

一次订阅。所有考试。

所有计划均可无限制搜索答案、进行模拟测试、获取AI解释以及访问完整的资源库 — 支持20多种语言。

每月
24.87
Just €0.83/day
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

最具价值
12个月
179.87
Just €0.49/daySave 40%
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品