gpt4 book ai didi

apache-kafka - Kafka Streams "map-side"像字典查找一样加入

转载 作者:行者123 更新时间:2023-12-05 00:54:41 27 4
gpt4 key购买 nike

这个问题是对 Kafka Streams with lookup data on HDFS 的跟进.
我需要将小字典数据加入(如“ map 端”加入)到主要的 Kafka 流

AFAIK,Kafka Stream 实例始终适用于主题的给定分区。如果我想做查找,
我需要为连接键重新分区两个流,以将相关记录放在一起。

如果需要检查多个查找数据,来回重新分区几次的成本是多少?
不可能将整个查找数据集发送到每个分区,所以当我构建一个 KTable 时从查找
主题,我将看到所有 Kafka Stream 应用程序实例中的整个数据集。
因此我可以在 KStream#transform() 中进行查找将本地 RocksDB 存储与所有
查找数据我有。

我想知道哪个选项更合适:

  • 将相同的数据(整个数据集)插入主题的每个分区并在 KStream#transform 中进行查找.
    当主题过度分区时,我们会有大量重复数据,但对于小数据集,这应该不是问题。
  • 使用 DSL API 对两个流进行重新分区,以便能够执行查找(连接)。
    这对性能有什么影响?
  • 最佳答案

    AFAIK, a Kafka Stream instance always works on a given partition of a topic. If I wanted to do lookups, I needed to repartition both streams for the join key, to bring the related records together.



    是的,从 Apache Kafka 0.10.0 和 0.10.1 开始,这就是您需要做的。

    What is the cost of repartitioning back and forth several times if multiple lookup data need to be checked? Wouldn't be possible to send the whole lookup dataset to each partition, so when I build a KTable from the lookup topic, I'll see the whole data set in all the Kafka Stream application instances.



    这样的功能——我们经常将它描述为“全局 KTable”或“全局状态”——确实很有用,我们已经在讨论何时/如何添加它。

    2017 年 2 月 28 日更新:围绕全局表的第一轮功能随 Kafka 0.10.2 一起发布,您将能够在其中执行 KStream-to-GlobalKTable 连接。

    do repartitioning of both streams using the DSL API to be able to perform the lookups (joins). What are the implications here in terms of performance?



    其含义主要取决于输入数据的特征(数据量、均匀与偏斜的数据分布等)。

    关于apache-kafka - Kafka Streams "map-side"像字典查找一样加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627198/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com