这是一个有点浅层次的问题。但是,我对这三项服务感到困惑。
我了解 KPL 产生快速数据,而 KCL 使用 Kinesis 产生的快速数据。但是,我不明白的是,如果 KPL 和 KCL 组成这一对,我们需要 AWS Kinesis 做什么?
另一种看待它的方式:如果 AWS Kinesis 可以产生快速数据而 KCL 可以使用它,那么我们需要 KPL 做什么?
非常感谢任何澄清的答案。
这是一个有点浅层次的问题。但是,我对这三项服务感到困惑。
我了解 KPL 产生快速数据,而 KCL 使用 Kinesis 产生的快速数据。但是,我不明白的是,如果 KPL 和 KCL 组成这一对,我们需要 AWS Kinesis 做什么?
另一种看待它的方式:如果 AWS Kinesis 可以产生快速数据而 KCL 可以使用它,那么我们需要 KPL 做什么?
非常感谢任何澄清的答案。
Kinesis Producer Library (KPL) 将用户格式化的小型记录聚合成最大 1 MB 的较大记录,以更好地利用 Amazon Kinesis Data Streams 吞吐量。
而 KCL for Java 支持分解这些记录。
更多信息请参考:https ://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html
一个问题是,KCL 和 KPL 主要关注 Java,但大多数数据科学家都喜欢 Python。始终可以在 Java MultiLangDaemon 之上创建 amazon-kinesis-client-python 库以进行进程间通信,但不建议这样做。
AWS Kinesis是一个非常广泛的平台。粗略地说,您可以将 AWS Kinesis 视为:Kinesis Data Streams + Kinesis Video Streams + Kinesis Firehose + Kinesis Analytics。(每个人都有自己的目的)。
More detail here:
https://aws.amazon.com/kinesis/
现在,让我们以Kinesis Data Streams为例: 如果您是一名开发人员并且您需要以编程方式(即 SDK)将数据馈送到特定的Kinesis Data Stream 怎么办?这就是KPL发挥作用的地方。您使用 KPL 将数据提供给该流。
与 KCL 类似的故事:
如果您是开发人员并且想要从该 DATA STREAM 中获取数据(“使用”),您可以使用 KCL。
简而言之: AWS Kinesis 是一个巨大的平台,KCL和KPL服务于特定目的。