我按照this教程中描述的设置来配置从Aurora到redshift的数据管道。我有一个完美的工作表,例如Sales。
但是现在我想扩展一些内容,以便我可以从其他表中引入数据,例如产品和类别使得每种数据类型最终都会在Redshift中的单独表中结束,即Redshift除了Categories表之外还应该有一个Sales表和一个Product表。
如何使用Kinesis / S3 / Redshift设置执行此操作?
Redshift只能从一个S3位置引入数据。同样,Kinesis可以配置为仅将数据放入一个S3位置。我正试图找到一种方法从基于数据类型的kinesis获取我的记录,以便它们进入不同的S3位置,因此我可以将它们拉入单独的Redshift表中。
显而易见的解决方案是拥有多个流,每个流对应一个数据类型,但我认为这将是昂贵的。有什么选择可以做到这一点?
好消息。在Kinesis Data Firehose中,您需要支付管道正在处理的only for the amount of data以及数据转换(如果适用)。所以你可以有两个独立的流,它不应该比单个流更昂贵。
关于Redshift Spectrum,您实际上可以根据需要从多个位置获取数据。如果你查看你链接的帖子,就会有这样的创建表语句
CREATE EXTERNAL TABLE IF NOT EXISTS spectrum_schema.ecommerce_sales(
ItemID int,
Category varchar,
Price DOUBLE PRECISION,
Quantity int,
OrderDate TIMESTAMP,
DestinationState varchar,
ShippingType varchar,
Referral varchar)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 's3://{BUCKET_NAME}/CDC/'
在该语句中,最后一行引用要包含在表中的S3文件的位置。您将配置多个流,每个表/ S3位置一个,但您可以使用单个Redshift群集查询所有表。