【问题标题】:Kafka select KSQL query on table return nothing卡夫卡在表上选择 KSQL 查询不返回任何内容
【发布时间】:2020-05-21 23:35:57
【问题描述】:

我尝试重复创建 Ktable 并手动选择 https://docs.ksqldb.io/en/latest/developer-guide/create-a-table/

从主题kafkacat -b broker:9092 -t videos中选择:

{"VideoId":"304b3306-c3d6-47c8-a936-c0e2d4d375ee","UserId":"7c8266d7-fea7-49c1-8fc2-aff47a9c19e5"}

从主题创建 Ktable

create table videos_table (VideoId varchar, UserId varchar) WITH (KAFKA_TOPIC = 'videos', KEY = 'VideoId', VALUE_FORMAT='json');

信息:show tables;

 Table Name  | Kafka Topic | Format | Windowed 
-----------------------------------------------
 VIDEOS_TABLE | videos       | JSON   | false    
-----------------------------------------------

从表格中选择:SELECT * FROM videos_table EMIT CHANGES;

屏幕上什么都没有。然后我将新的味精插入主题,我在 kafkacat 中看到它,但是这个选择不打印任何内容。在手册上他们有结果:

screen from manual, they have result

我做错了什么?

【问题讨论】:

  • 您使用的是什么版本的 ksqlDB? ksqlDB服务器日志有错误吗?
  • cp-ksqldb-server:5.5.0。我使用 docker,日志命令是什么?或者可以 cat as linux /var/logs/ksqldb/ ?
  • docker logs -f <container name>
  • 我在您分享的链接中没有看到任何VIDEOS_TABLE。也许该示例已在网站上更新。
  • 从上面的输出中不清楚 kafka 记录的键是什么。您可以将-K 开关添加到kafkacat 并更新输出吗?如果 CREATE TABLE 要在 ksqlDB 中工作,设置 Kafka 记录的键很重要。

标签: apache-kafka ksqldb confluent-platform


【解决方案1】:

默认情况下,ksqlDB 从主题的末尾读取。如果没有新消息写入主题,则查询不会返回结果。

确保将auto.offset.reset 设置为earliest,以便ksqldb 从主题的开头读取。最后重新运行查询,所有数据现在都应该可见了。


SET 'auto.offset.reset'='earliest';

【讨论】:

  • 是的,我找到了这个选项并尝试了。但什么都没有,我在 SELECT 查询运行后在主题中插入新的味精,但什么也没打印
猜你喜欢
  • 2018-11-17
  • 2019-11-13
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2018-02-28
  • 2017-10-20
相关资源
最近更新 更多