|
|
1
1
来自源代码上的注释
Upsert kafka sink不需要计划器发送UPDATE_BEFORE消息(在某些情况下,计划器仍然可以发送UPDATE-BEFORE消息),并且会将INSERT/UPDATE_AFTER消息作为带有关键部分的普通kafka记录写入,并将DELETE消息作为带有空值的kafka记录写入(指示密钥的逻辑删除)。Flink将通过主键列值上的分区数据来保证主键上的消息排序。 Upsert-kafka源是一种变更日志源。变更日志源上的主键语义意味着物化变更日志(INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE)在主键约束上是唯一的。Flink假设所有消息都在主键上按顺序排列。 实施详细信息 由于upstart,kafka连接器只生成不包含UPDATE_BEFORE消息的upstart流。但是,有些操作需要UPDATE_BEFORE消息才能正确处理,例如聚合。因此,我们需要有一个物理节点来实现upstart流,并生成具有完整更改消息的变更日志流。在物理操作符中,我们将使用state来知道密钥是否是第一次被看到。操作员将生成INSERT行,或者为上一个图像额外生成UPDATE_BEFORE行,或者生成DELETE行,其中所有列都填充了值。 |
|
|
Ellen Spertus · 使用Scala访问HBase的推荐方法 8 年前 |
|
|
Daniel · 目录中的Apache Flink流文件 8 年前 |
|
|
Jicaar · 一个卡夫卡制作人可以被多个接收器安全使用吗? 8 年前 |