这个问题是kafka流的后续问题,其中包含hdfs上的查找数据。我需要将小字典数据(如“map side”join)连接到主Kafka流
另外,kafka流示例总是在给定的主题分区上工作。如果我想查找,我需要为join键重新划分两个流,以便将相关记录放在一起。
如果需要检查多个查找数据,来回多次重新分区的成本是多少?无法将整个查找数据集发送到每个分区,因此当我构建 KTable
在查找主题中,我将看到所有kafka流应用程序示例中的整个数据集。这样我就可以在 KStream#transform()
方法,该方法将本地rocksdb存储我拥有的所有查找数据。
我想知道哪种选择更合适:
将相同的数据(整个数据集)插入主题的每个分区,并在中进行查找 KStream#transform
. 当主题被过度分区时,我们会有很多重复的数据,但是对于一个小的数据集来说,这应该不是问题。
使用dslapi对两个流进行重新分区,以便能够执行查找(连接)。在性能方面有什么影响?
1条答案
按热度按时间jm81lzqq1#
另外,kafka流示例总是在给定的主题分区上工作。如果我想查找,我需要为join键重新划分两个流,以便将相关记录放在一起。
是的,从ApacheKafka0.10.0和0.10.1开始,这就是您需要做的。
如果需要检查多个查找数据,来回多次重新分区的成本是多少?无法将整个查找数据集发送到每个分区,因此当我从查找主题构建ktable时,我将在所有kafka流应用程序示例中看到整个数据集。
这样的功能——我们通常将其描述为“global ktable”或“global state”——确实很有用,我们已经在讨论何时/如何添加它。
更新日期:2017年2月28日:kafka 0.10.2发布了关于全局表的第一轮功能,您将能够执行kstream到globalktable的连接。
使用dslapi对两个流进行重新分区,以便能够执行查找(连接)。在性能方面有什么影响?
其含义主要取决于输入数据的特征(数据量、均匀与倾斜的数据分布等)。