【问题标题】:cannot get data from table KSQL无法从表 KSQL 中获取数据
【发布时间】:2020-05-14 00:15:26
【问题描述】:

我创建了一个重新加密的流

CREATE STREAM details_stream_rekeyed2 as \
  select CONCAT(IdSeq,IdTime,'') as root,ServerId,Server,\
         IdTime ,IdSeq \
  from voip_details_stream  \
  partition by root;

从此流中选择,我得到 > 100 个项目

然后我尝试创建一个表

create table voip_details_table3 \
  (ROOT varchar,ServerId long , Server varchar ,IdTime varchar,IdSeq long ) \
  with ( kafka_topic = 'DETAILS_STREAM_REKEYED2', \
         value_format = 'json',\
         key='ROOT');

当我跑步时

SELECT ROWKEY,ROOT  FROM VOIP_DETAILS_TABLE3;

我只得到了不到 10 个赞;

12018-04-04T18:56:35.080-04:00 | 12018-04-04T18:56:35.080-04:00

我运行命令:

kafkacat -C -K: -b "$BROKER_LIST" -f 'Key:    %k\nKey Bytes: %K\nValue:  %s\nValue Bytes: %S\n\n' -t DETAILS_STREAM_REKEYED2

一切正常。我得到喜欢的数据

 Key:    12018-02-05T15:16:07.113-05:00
 Key Bytes: 30
 Value:  {"SERVER":null,"IDSEQ":1,"ROOT":"12018-02-05T15:16:07.113-05:00","SERVERID":null,"SESSIONIDTIME":"2018-02-05T15:16:07.113-05:00"}

值字节:158

哪里出了问题?

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    KSQL 表与 KSQL 流的不同之处在于它为您提供给定键最新值。因此,如果您希望在表中看到与源流相同数量的消息,则应该具有相同数量的唯一键。

    如果您看到的消息较少,则表明 ROOT 不是唯一的。

    根据您要建模的问题,您应该:

    • (a) 使用 Stream 而不是 Table,或者
    • (b) 更改您正在使用的密钥

    参考:

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2013-10-14
      • 2012-09-18
      • 2019-03-03
      • 2021-09-14
      相关资源
      最近更新 更多