Q52 — AWS SAA-C03 第16章

第 52/100 题 | ← 返回第16章

Q1252. 一家公司拥有 CSV 格式的客户数据。该公司将数据存储在 Amazon S3 中,并在 AWS Glue 数据目录中进行编目。该公司有一个包含历史呼叫中心数据的 Amazon Redshift 集群。该集群负载很重,该公司不想将任何新数据加载到集群中。该公司希望将存储在 Amazon S3 中的客户数据与存储在 Amazon Redshift 中的历史呼叫中心数据连接起来。该公司将使用一个每日批处理流程,该流程需要运行数小时。哪种解决方案能够以最少的运营开销满足这些要求?

正确答案: A. 使用 AWS Lambda 函数将历史呼叫中心数据从 Amazon Redshift 卸载到 Amazon S3。使用 AWS Glue ETL 脚本与驻留在 Amazon S3 中的客户数据执行 JOIN 操作

解析

最佳且运营开销最小的解决方案是选项 A,该方案需要将 Redshift 数据卸载到 S3,并使用 AWS Glue ETL 脚本执行 JOIN 操作。具体分析如下:关键要求:避免将新数据加载到 Redshift 中(由于负载过重)。每天在 S3(客户 CSV 数据)和 Redshift(历史呼叫中心数据)之间执行批量 JOIN 操作。最大限度地降低运营开销(无需手动导出,无需复杂设置)。选项分析:A.通过 Lambda + 使用 AWS Glue 进行 JOIN 将 Redshift 卸载到 S3最佳选择:Redshift UNLOAD(通过 Lambda)以可扩展的自动化方式将数据导出到 S3。AWS Glue ETL(PySpark)高效地将基于 S3 的客户数据与卸载的 Redshift 数据连接起来。无需 Redshift 加载——数据处理完全在 Redshift 之外进行。完全无服务器(Lambda + Glue),减少维护。B.通过 CLI + 使用 AWS Glue 进行 JOIN 将 Redshift 导出到 EC2高昂的运营开销:需要手动或脚本导出到 EC2(非自动化)。EC2 实例需要维护(扩展、修补)。效率低于基于 S3 的处理。C. 使用 Redshift Spectrum 处理 S3 数据 + 在 Redshift 中进行 JOIN违反要求:仍然需要将数据加载到 Redshift 中(Spectrum 查询 S3,但 JOIN 发生在 Redshift 中,而 Redshift 的负载很重)。不允许(公司明确希望避免将新数据加载到 Redshift 中)。D.通过 Sqoop + JOIN 与 Hive 导出 Redshift 到 EMR最复杂且开销最高:需要管理 EMR 集群(扩展、调整、成本)。Sqoop 和 Hive 增加了复杂性(与无服务器 Glue 相比)。对于日常批处理来说并不理想。为什么选项 A 是最佳选择:没有 Redshift 负载(避免性能影响)。完全自动化(Lambda 触发 UNLOAD,Glue 处理 ETL)。可扩展且经济高效(S3 + Glue 自动扩展)。低维护(无需 EC2/EMR 管理)。选项A的实施步骤:设置 Lambda 以卸载 Redshift 数据:使用 UNLOAD 命令将 Redshift 表导出到 S3(Parquet/CSV)。安排 Lambda 每日运行(例如,通过 CloudWatch Events)。配置 AWS Glue ETL 作业:从 S3 读取卸载的 Redshift 数据和客户 CSV。使用 PySpark 执行 JOIN(AWS Glue 原生支持此功能)。将结果存储回 S3(或其他目的地)。监控和优化:使用 Glue 指标来跟踪工作绩效。调整分区/压缩以节省成本。最终答案:一个该解决方案以最少的运营工作满足要求,同时确保 Redshift 不承担任何负担。