Spectrum 是为 Redshift 提供 S3 数据接口的“粘合剂”。Redshift 是您的业务应用程序的访问层。Spectrum 是从 S3 访问的数据的查询处理层。下图说明了这些服务之间的关系。
进一步了解:Amazon Redshift Spectrum 如何工作?
从部署角度来看,Spectrum 处于“幕后”位置。它是您私有VPC 中的一组托管节点, 可供任何启用 Spectrum 的 Redshift 集群使用。它将计算密集型任务推送到 Redshift Spectrum 层。该层独立于您的 Amazon Redshift 集群。
有三个关键概念可以帮助您了解如何使用 Redshift Spectrum 运行查询:
外部架构
外部表
外部数据目录包含您希望在 S3 中访问的数据的架构定义。它是您的数据资产的中央元数据存储库。数据目录的潜在选项包括:
Athena 使用的数据目录 (默认选项)
AWS Glue
您自己的 Apache Hive 元存储(例如 Amazon EMR)
外部架构包含您的表。外部表允许您使用与其他 Amazon Redshift 表相同的 SELECT 语法查询 S3 中的数据。外部表是只读的,即您无法写入外部表。
您不必为 Spectrum 编写新的查询。您可以继续编写常用的 Redshift 查询。Spectrum 的唯一变化是查询应包含对存储在 S3 中的数据的引用。
使用 Amazon Redshift Spectrum 连接内部表和外部表
Redshift 查询引擎以相同的方式处理内部表和外部 加拿大电话数据 表。您可以对任一类型的表或两者的组合执行典型操作,例如查询和联接。例如,查询外部表并将其数据与内部表的数据联接起来。
假设您正在使用 Redshift 分析电子商务网站访客的数据。您正在分析指标,例如他们访问了哪些页面、他们停留了多长时间以及他们购买了什么。您将一年的数据保存在 Redshift 集群中。您将较旧的数据移动到 S3。
在分析过程中,您注意到一个奇怪的季节性变化。您想看看过去几年是否也存在这种情况, 或者这只是今年的一个异常现象。幸运的是,您已在 S3 中保存了可追溯到几年前的历史点击流数据。现在,您可以通过 Spectrum 的外部表访问该历史数据,并运行与在 Amazon Redshift 中运行的相同查询。您还可以通过将前几年的数据与今年的数据结合起来,创建新的见解。
Redshift 以通常的方式解析、编译 SQL 查询并将其分发到集群中的节点。查询中引用外部表的部分将发送到 Spectrum。Spectrum 在 S3 中处理相关数据,并将结果发送回 Redshift。Redshift 从其节点和 Spectrum 收集部分结果,进行连接、合并等,然后返回完整结果。