【问题标题】:KSQL - Join unequal partitions streamsKSQL - 加入不相等的分区流
【发布时间】:2019-01-09 11:27:52
【问题描述】:

除了增加分区外,如何在KSQL中加入不相等数量的分区持有流?

示例 Stream-1 有 3 个分区,Stream-2 有 2 个分区。在这种情况下,我们当然可以将 Stream-1 的分区数增加为 3 join。但我想知道,通过 KSQL 加入不相等分区流的任何其他方法?

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    不,不幸的是,KStream/KSQL 不支持不等分区主题的联接。

    先决条件是两个主题在调用join操作之前应该有相同数量的分区,否则会失败。

    您可以在此处阅读有关共同分区要求的更多信息: https://docs.confluent.io/current/ksql/docs/developer-guide/partition-data.html#partition-data-to-enable-joins

    为确保共同分区,您可以使用 PARTITION_BY 子句创建新流:

    CREATE STREAM topic_rekeyed WITH (PARTITIONS=6) AS SELECT * FROM topic PARTITION BY topic_key;
    

    【讨论】:

    • 感谢您的回复。我们可以将不相等的分区 KSQL KTable 转换为 GlobalKTable 并加入吗?那有可能吗?请确认相同。
    • 我不确定 KSQL 是否支持 Global Table 作为 Kafka Streams。但是如果你使用的是 KStreams,如果你绝对可以转换为 GlobalKTable 以避免共同分区。请注意,GlobalKTable 会将所有分区的数据复制到每个节点以加入 Streams/Table,因此它可能不适合大容量数据。
    • 再次感谢您的回复。根据您的说法,我可以得出结论,不相等的分区流连接应该满足以下条件。 1. 两个流应该有相同数量的分区或 2. 我们可以将两个流转换为 GlobalKTable 并加入 ..
    • Statement1 是正确的,更正语句 2“我们可以将两个流都转换为 GlobalKTable 并加入” - 你不能让 GlobalKTable-GlobalKTable 加入。 KStream 支持 Stream-Table、Table-Table、Stream-Stream 和 Stream-GlobalKTable join。 (docs.confluent.io/current/streams/developer-guide/…) 这样您就可以将一个流更改为 GlobalKTable 并执行 Stream-GlobalKTable join
    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多