代码之家  ›  专栏  ›  技术社区  ›  Amitabh Ranjan

卡夫卡-多主题与多分区

  •  2
  • Amitabh Ranjan  · 技术社区  · 7 年前

    我正在开发一个apache spark用例,需要从kafka中读取数据。我有一个非常基本的问题来理解spark读取卡夫卡数据的方式。

    根据我的理解,如果数据速度和容量很高,那么我可以在kafka中创建多个分区,并在spark中读取。现在,dstream中的分区数与kafka中的分区数相同。

    现在我的问题是:-

    我只有一个生产者和一个消费者。

    在第一个场景中:-

    (1) 1个卡夫卡主题,4个分区-->1个带4个分区的数据流

    在第二种情况下:-

    但在这里,我可以“联合”所有数据流来创建单个数据流。

    unionedDstream= dstream1.union(dstream2).union(dstream3).union(dstream4)
    

    现在,“unionedDstream”将变成“具有4个分区的1个数据流”(与第一个场景相同)。如果是,那么哪个流程在性能方面更有效?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Thilo    7 年前

    我假设在单节点场景中或多或少是一样的,但是如果你想利用Kafka的集群/负载平衡功能,你需要有多个分区。

    Kafka中的水平扩展是通过将消费者群体分布在多台机器上并在其中分布分区来实现的。这仅在您有多个分区时有效。