【问题标题】:Is there a guarantee that all exploded rows in a stream will get updated into table at once?是否可以保证流中的所有爆炸行都会立即更新到表中?
【发布时间】:2020-10-26 04:51:08
【问题描述】:

如果我有一个流 s1,其中 messages 列类型为 Array<Map<VARCHAR, VARCHAR>>,如下所示

ROWTIME    key   messages
-------------------------------
t1          1     [{id: 1, k1: v1, k2: v2}, {id: 2, k1: v3, k2: v4}]
t2          2     [{id: 1, k1: v5, k2: v6}, {id: 2, k1: v7, k2: v8}]
.......
.......

我正在创建另一个流 s2 使用

create stream s2 as select explode(message) from s1 emit changes;
ROWTIME           message
-----------------------------
t1              {id: 1, k1: v1, k2: v2}
t1              {id: 2, k1: v3, k2: v4}
t2              {id: 1, k1: v5, k2: v6}
t2              {id: 2, k1: v7, k2: v8}
...........
...........

我的目标是创建一个包含idk1k2 列的表,我在 s1 中以数组格式发布,以确保它们都在表中一起更新.

create stream s3 as select message['id'] as id, message['k1'] as k1, message['k2'] as k2 from s2 emit changes;
create table table1 as select id, latest_by_offset(k1), latest_by_offset(k2) from s3 group by id emit changes;

通过以上,是否可以保证从单个数组分解的所有消息(任意计数,当前计数为 2)将立即应用于表 1?换句话说,是否可以保证以下状态是never可能的,只有来自t2 的id 1 应用于table 1,但id 2 来自t2 时间戳不是已申请。

ROWTIME       id        k1          k2
----------------------------------------
t1             2        v3          v4
t2             1        v5          v6

【问题讨论】:

    标签: ksqldb


    【解决方案1】:

    ksqlDB 目前不保证这一点。尽管有可能增强 ksqlDB 以支持这一点。可能值得提出feature request

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 2016-04-21
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2015-08-25
      • 1970-01-01
      相关资源
      最近更新 更多