开发者社区> 问答> 正文

Upsert kafka 作为 source 的几个问题有人能解答吗?

1、为什么source 默认要从 earliest 开始消费,是为了能够找到或者 补全 update before 数据? kafka

数据也有清理周期,给我感觉是 如果 state 找不到 就是 insert . 如果下游sink 能做 upsert 处理 比如 hbase 是不是

source 就可以解除这限制

2、翻了下 代码 没找到维护 sate 的源码位置,请指导下 核心类

3、Upsert kafka 作为 source 是否有严格要求 消息生产端必须对 消息进行 分区,使得 相同主键的 数据发送到同一个 kafka

partition.*来自志愿者整理的flink邮件归档

展开
收起
EXCEED 2021-12-02 11:15:13 612 0
1 条回答
写回答
取消 提交回答
    1. 当初的设计是一个较为保守的设计,其主要目的就是为了能够补全delete消息;

    2. 核心类是 StreamExecChangelogNormalize[1]

    3. 是的。目前 Upsert-kafka 要求具有相同key的数据在相同 partition 的。因为 kafka 仅保证 partiiton 内按

    offset 读取,如果相同 key 的数据分布在不同 partition 的话,那么读取会乱序。

    1. 当数据进入到具体的算子的时候并不会区别数据是来自什么connector的。如果 left, right 的 paritition

    策略不一致,会shuffle的。

    请问具体是有什么需求吗? 另外能再说说 ksql 具体的限制吗?

    [1]

    https://github.com/apache/flink/blob/99c2a415e9eeefafacf70762b6f54070f7911ceb/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/stream/StreamExecChangelogNormalize.java*来自志愿者整理的FLINK邮件归档

    2021-12-02 11:25:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载