根据数据类型将来自AWS Kinesis的数据放入不同的存储桶中

时间:2019-02-27 17:41:10

标签: amazon-web-services amazon-s3 amazon-redshift amazon-kinesis amazon-kinesis-firehose

我已经按照this教程中描述的设置来配置从Aurora到Redshift的数据管道。我已经在一张桌子上完美地工作了,例如销售。

但是现在我想扩展内容,以便可以从其他表中引入数据,例如产品和类别,以使每种数据类型最终都可以在Redshift中的一个单独的表中找到,即Redshift除了类别表之外,还应该具有一个Sales表和一个Product表。

我该如何使用Kinesis / S3 / Redshift设置?

Redshift仅能从一个S3位置引入数据。同样,可以将Kinesis配置为仅将数据放入一个S3位置。 我正在尝试找到一种基于数据类型从运动学中获取记录的方法,以便将它们放入不同的S3位置,以便将它们拉到单独的Redshift表中。

显而易见的解决方案是每个数据流都对应一个数据类型,但我认为这会很昂贵。有什么选项可以做到这一点?

1 个答案:

答案 0 :(得分:1)

好消息。在Kinesis Data Firehose中,您要only for the amount of data支付管道正在处理的费用,以及数据转换(如果适用)的费用。因此,您可以有两个单独的流,并且它不应该比单个流贵。

关于Redshift Spectrum,实际上您可以根据需要从任意多个位置带来数据。如果您查看所链接的帖子,则会有一个像这样的create table语句

    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集群查询所有表。