Q16 — AWS SAA-C03 第17章
第 16/89 题 | ← 返回第17章
Q1316. 一家公司从多个来源接收数据,并将数据存储在 Amazon S3 数据湖中。该公司对数据进行转换,并将其导入多个下游数据存储区,包括数据库和数据仓库。解决方案架构师希望设计一个提取、转换和加载 (ETL) 管道,以协调数据准备和加载流程,从而为分析活动做好准备。处理后的数据还必须通过仪表板和可视化工具提供给利益相关者。哪种解决方案能够以最少的开发工作量满足这些要求?
- A. 使用 Amazon EMR 和自定义 Scala 脚本创建 ETL 管道。使用 AWS Lambda 函数编排工作流。使用 Amazon OpenSearch Service 生成仪表板和可视化图表。
- B. 使用 AWS Glue 创建 ETL 管道。使用 AWS Step Functions 编排工作流。使用 Amazon QuickSight 生成仪表板和可视化图表。 ✓
- C. 使用 AWS Lambda 函数创建 ETL 管道。使用 AWS Step Functions 编排工作流。使用 Amazon QuickSight 生成仪表板和可视化图表。
- D. 使用在 Amazon EC2 实例上运行的自定义脚本创建 ETL 管道。使用 AWS Glue 编排工作流。使用 AWS Glue DataBrew 生成仪表板和可视化图表。
正确答案: B. 使用 AWS Glue 创建 ETL 管道。使用 AWS Step Functions 编排工作流。使用 Amazon QuickSight 生成仪表板和可视化图表。
解析
设计一个能够处理来自 Amazon S3 的数据、将其加载到下游存储并支持仪表盘和可视化的 ETL 管道,最有效且开发工作量最小的解决方案是:B. 使用 AWS Glue 创建 ETL 管道。使用 AWS Step Functions 编排工作流。使用 Amazon QuickSight 生成仪表板和可视化图表。为什么选项 B 正确:AWS Glue 用于 ETL 管道(开发工作量最小)AWS Glue 是一项完全托管的无服务器 ETL 服务,可自动生成用于数据转换的 Python/Scala 脚本。它能够发现模式元数据(通过 AWS Glue 数据目录),并以最少的代码处理扩展、容错和监控。支持批量和流式 ETL 作业,使其成为数据湖集成的理想选择。AWS Step Functions 用于工作流编排AWS Step Functions 提供无服务器工作流编排功能,允许您将多个 AWS 服务(例如 Glue、Lambda、S3、DynamoDB)链接成一个状态机。它无需编写自定义脚本(与选项 A/C 中基于 Lambda 的编排不同),并提供可视化调试和重试机制。Amazon QuickSight 仪表盘和可视化Amazon QuickSight 是一项完全托管的 BI 服务,可与 S3、Redshift、RDS 和 Glue 数据目录无缝集成。它无需任何基础设施设置,并支持交互式仪表板、机器学习驱动的洞察和嵌入式分析。其他选项为何错误:A. Amazon EMR + 自定义 Scala 脚本 + Lambda + OpenSearch Service 开发工作量大:需要手动编写脚本(EMR 使用 Scala,编排使用 Lambda)。OpenSearch 功能过剩:更适合日志分析/搜索用例,而非业务仪表板。运维开销:管理 EMR 集群会增加成本和复杂性。C. AWS Lambda 用于 ETL + Step Functions + QuickSightLambda 的局限性:不适用于大规模 ETL(最大运行时间 15 分钟,内存有限)。Glue 更适合 ETL:基于 Lambda 的 ETL 需要比 Glue 自动生成的脚本更多的手动编码。D. 自定义 EC2 脚本 + AWS Glue 编排 + Glue DataBrew 用于仪表盘:运维开销高:与无服务器的 Glue 相比,管理用于 ETL 的 EC2 实例效率低下。Glue DataBrew 不适用于仪表盘:它是一个数据准备工具,而不是可视化服务(需要使用 QuickSight)。方案B的实施步骤:设置 AWS Glue ETL 作业创建 Glue 爬虫程序,用于发现和编目 S3 中的元数据(例如,CSV/JSON 文件)。开发 Glue ETL 作业(使用 GUI 或自动生成的脚本)来转换数据(例如,清洗、聚合)。配置作业以将处理后的数据输出到 S3 或下游数据库(例如 Redshift、Aurora)。使用 AWS Step Functions 进行编排在 Step Functions 中定义一个状态机,该状态机:触发 Glue ETL 作业。等待完成(带错误处理/重试机制)。(可选)调用其他服务(例如,Lambda 用于后处理)。使用 AWS SDK 集成与 Glue、S3 等进行交互。使用 Amazon QuickSight 构建仪表板将 QuickSight 连接到 S3(用于处理后的数据)或 Redshift/RDS(用于结构化数据)。创建交互式可视化图表(例如,折线图、数据透视表)并发布仪表板。通过电子邮件/短信提醒或嵌入式 URL 与利益相关者共享仪表板。关键考虑因素:成本优化:使用 Glue Spot 实例可以节省 ETL 作业的成本。设置 Step Functions 标准工作流程(对于长时间运行的作业来说,比 Express 更便宜)。安全:对静态数据(S3 SSE-S3/KMS)和传输中的数据(SSL/TLS)进行加密。对 Glue、Step Functions 和 QuickSight 使用权限最小的 IAM 角色。可扩展性:Glue 会根据作业需求自动扩展计算资源。Step Functions 可以处理数千个并发执行。结论:方案 B 是最佳选择,因为它利用了完全托管的 AWS 服务(Glue、Step Functions 和 QuickSight),最大限度地减少了开发工作量,同时提供了可扩展的 ETL、可靠的编排和强大的可视化功能。其他方案要么引入了不必要的复杂性,要么使用了不匹配的工具(例如,使用 OpenSearch 构建仪表盘,使用 EC2 构建 ETL)。