首页 > 解决方案 > Firehose - 仅从流中复制特定的特定数据

问题描述

我目前正在使用 Amazon Kinesis Firehose 将分析数据转储到 Redshift 数据库表中。随着时间的推移,这个表变得非常大,查询变得越来越慢。

为了加快速度,我想设置多个 Firehose,并根据 json 文档的内容区分 COPY 命令。

例如,如果我有两个如下所示的 json 文档:

  tableName: 'abc',
  data: 'some string of data'
}

{
  tableName: 'xyz',
  data: 'some string of data'
}

我会设置两个消防软管。Firehose abc 将在 table 中运行 COPY 命令abc,Firehose xyz 将在 table 中运行 COPY 命令xyztableName但是,他们应该根据json 中的指定忽略彼此的数据。例如,如果xyz正在复制数据,并且 json 有tableName: 'abc',它应该忽略该文档。

我的问题是,这可能吗,或者有没有人有经验解决 Redshift 表增长到大量数据并减慢查询的问题?

标签: amazon-web-servicesamazon-redshiftamazon-kinesisamazon-kinesis-firehose

解决方案


您可以创建一个传输流,它允许您引入一个 Lambda 函数,以便在数据到达目的地之前对数据执行转换/过滤。

这是一篇讨论如何设置的文章。 它使用 S3 作为目标,但您应该能够使用与 Redshift 作为目标的相同方法。


推荐阅读