flink dynamic table vs kafka stream ktable?

nbnkbykc  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(316)

我读到了kafka流中连接的一些限制,比如ktable ktable non key join或ktable globalktable。。。。
我发现Flink似乎支持这一切。据我所知,动态表听起来像ktable。
我想知道,如果首先,他们是同一个概念,然后不知何故,Flink如何实现这一点,我找不到有关底层基础设施的文档。例如,我没有发现在globalktable中发生的广播连接的概念。底层基础设施是否实现了动态表分布式??

wnavrhmk

wnavrhmk1#

我不是100%肯定,因为我不知道所有的细节Flink的“动态表”的概念,但在我看来,这是一样的 KTable 在Kafka河。
然而,两者之间有区别 KTable 和一个 GlobalKTable 在Kafka的溪流中,两者不是完全一样的东西(1) a KTableGlobalKTable 复制/广播(2) a KTable 事件时间同步吗 GlobalKTable 不是。出于同样的原因 GlobalKTable 启动时完全加载/引导 KTable 根据changelog记录事件时间戳(与其他输入流的事件时间戳相关)进行更新。此外,在处理对 KTable 在更新事件时是否同步事件时间 GlobalKTable 不是(即,它们是立即应用的,因此可以认为是不确定的)。
最后一个注解:kafka streams添加了外键 KTable-KTable 加入即将发布的2.4版本。还有一张票要加 KTable-GlobalKTabel 但此功能尚未经常请求,因此尚未添加:https://issues.apache.org/jira/browse/kafka-4628

ioekq8ef

ioekq8ef2#

Flink动态表与Kafka动态表 KTable 都不一样。
在flink中,动态表是一个非常通用和广泛的概念,即随时间演化的表。这包括任意更改( INSERT , DELETE , UPDATE ). 动态表不需要主键或唯一属性,但它可能有主键或唯一属性。
KStream 是一种特殊类型的动态表,即只接收 INSERT 更改,即一个不断增长的、仅附加的表。
KTable 是另一种类型的动态表,即具有唯一键并随时间变化的动态表 INSERT , DELETE ,和 UPDATE 钥匙上的变化。
flink在动态表上支持以下类型的联接。请注意,对kafka连接的引用可能不是100%准确的(很乐意修复错误!)。
时间窗口连接应与ksql的连接相对应 KStream - KStream 连接
时态表连接类似于ksql KStream - KTable 连接。两个表之间的时态关系需要在查询中显式指定,以便能够在批处理/脱机数据上以相同的语义运行相同的查询。
常规连接比ksql更通用 KTable - KTable 连接,因为它们不需要输入表具有唯一键。此外,flink不区分主键联接和外键联接,但要求联接是相等联接,即至少有一个相等 predicate 。在这一点上,streamingsqlplanner不支持广播前向连接(我认为应该大致对应于广播前向连接) KTable - GlobalKTable 连接)。

相关问题