我正在开发一个apache spark用例,我需要从kafka读取数据。我有一个非常基本的问题来理解火花从卡夫卡读取数据的方式。kafka - 多个主题vs多个分区
根据我的理解,如果数据速度和体积很高,那么我可以在卡夫卡中创建多个分区并在火花中读取它。现在,dstream中的分区数量与kafka中的分区数量相同。
我可以通过创建多个包含每个分区的kafka主题来实现相同的方案。我可以配置我的卡夫卡制作人将数据按顺序推送到所有主题。这将在spark中创建多个dstream。然后,我可以简单地“联合”所有的dstream来创建我的unionedDstream。
现在我的问题是在于: -
将“其他dstreams的工会”创建unionedDstream将有相同数量的分区通过读取“单一话题多个分区”
创建一个为了清晰起见,我将举一个例子: -
我有单一生产者和单一消费者。
在第一种方案: -
(1)1个卡夫卡话题4个分区 - > 1 DSTREAM有4个分区
在第二场景: -
(2)4个卡夫卡主题使用1个分区 - > 4个Dstream,每个分区有一个分区。
但是在这里我可以“联合”所有的dstream来创建一个dstream。
unionedDstream= dstream1.union(dstream2).union(dstream3).union(dstream4)
现在将“unionedDstream”变成“带有4个分区的1个Dstream”(与第一个场景相同)。如果是的话那么哪个流程会更有效果呢?