Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 无法从表KSQL获取数据_Apache Kafka_Ksqldb - Fatal编程技术网

Apache kafka 无法从表KSQL获取数据

Apache kafka 无法从表KSQL获取数据,apache-kafka,ksqldb,Apache Kafka,Ksqldb,我创建一个重新设置密钥的流 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_t

我创建一个重新设置密钥的流

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


问题出在哪里?

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

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

根据建模时遇到的问题,您应该:

  • (a) 使用流而不是表,或者
  • (b) 更改您正在使用的密钥
参考: