【发布时间】:2017-09-14 19:09:03
【问题描述】:
我有来自不同生产者的数据进入 Kinesis 流。数据需要根据数据的类型转换成几个不同的表。我正在尝试从 Kinesis Streams 读取 Lambda,将数据转换为不同的表,然后使用 Kinesis Firehose 进行批处理并复制到 Redshift。
但是,由于 Firehose 一次只能交付给一个 Redhsift 表,因此我需要运行多个 Firehose 实例,这与我的 Redshift 架构中的表数量相同。我看到每个区域有 20 个 Firehose 实例的默认上限,我想知道这是否是我想要实现的理想数据管道。
【问题讨论】:
-
您能否使用 Kinesis 分析应用程序对流进行预处理并将其拆分为多个流?看起来您可以将目标流作为 Kinesis Firehose 到 Redshift docs.aws.amazon.com/kinesisanalytics/latest/dev/…
-
@Nathan - 感谢您的建议。虽然这很有趣,但这并不能解决使用多个 Kinesis Firehose 实例的问题 - 我仍然需要与架构中的表数量一样多的 Firehose 实例。其次,与原始 sql 相比,我的数据转换更适合用 python/javascript 编写,因为我可以使用第三方库进行一些复杂的转换。
-
我不认为你会找到一种方法来从单个流中填充多个 Redshift 表,而不先将原始流加载到阶段表中,然后在 Redshift 中将其拆分,或者拆分流并且每个表有一个流。 Redshift 是必需的吗?如果不是,也许雅典娜是替代品?
-
雅典娜看起来很有趣。将不得不评估它。我们的读取查询负载将是密集的和相关的(即涉及 JOIN,即使有一个扁平的、非规范化的模式)。我们已经将 Redshift 用于我们的一些其他分析相关服务。将不得不为我们的用例评估 Athena,即 Redshift。
-
@NathanGriffiths 如何使用 Athena 来实现?你能提供一个文档链接吗?
标签: amazon-web-services amazon-redshift amazon-kinesis amazon-kinesis-firehose