根据来自 S3 的记录过滤来自 Redshift 的记录

Filter records from Redshift based on records from S3

我是 AWS 新手。我正在为以下用例设计解决方案。

我在 S3 中有一个关系数据库的副本,一个存储桶中有几个文件,每个文件代表一个 table 并且列以竖线分隔。文件的总大小约为 2 GB。 我还有数十亿条记录分布在红移中的多个 table 中。

我需要根据 S3 中可用的记录(通过加入几个文件)过滤来自 redshift 的记录(通过加入几个 tables)并将其写入 DB/S3.

示例 - 假设 S3 具有包含产品详细信息的产品文件和包含标准详细信息的标准文件,当标准匹配时,应将产品显示为对客户的建议。条件和产品 table 使用产品 ID 链接。例如,当客户已经购买 ipad(标准)

时,显示 ipad 个配件(产品)作为建议

Redshift 的 Customer table 包含客户列表,Product table 包含他们购买的产品列表。产品和客户都使用 customerid 链接。

对于 S3 中基于标准的每个可用产品,我需要找到应该根据客户已经购买的产品向其推荐该产品的客户列表。

有人可以提供有关如何在 AWS 中实现这一点的高级想法吗?

查看 Redshift Spectrum,它将允许您定义位于 S3 中的外部 table。外部 table 将允许您仅从 S3 中提取符合您条件的记录,然后将此信息加入您的客户 tables。

这应该适用于 Spectrum,因为您的 S3 数据不是很大,并且您在将结果传递给 Redshift 之前按照您的标准对其进行削减。当您的 S3 数据通过简单的 WHERE 子句缩减并通过 GROUP BY 缩减时,Spectrum 最为强大。当返回到 RS 集群时,这会使结果的网络流量保持较小。