ksqldb - ksqlDB 没有正确使用 rowkey
问题描述
我在json中生成了有关名为 SENSOR_STATUS_DETAILS 的主题的以下数据:
1001
{
"sensorid": 1001,
"status": "CONNECTED",
"lastconnectedtime": "2020-05-31 22:31:54"
}
1002
{
"sensorid": 1002,
"status": "CONNECTED",
"lastconnectedtime": "2020-05-31 22:33:37"
}
我正在尝试从中制作一张表格:
CREATE TABLE STATUS_IB_TABLE (ROWKEY INT KEY,
sensorid INTEGER,
status VARCHAR,
lastconnectedtime STRING)
WITH (TIMESTAMP='lastconnectedtime', TIMESTAMP_FORMAT='yyyy-MM-dd HH:mm:ss', KAFKA_TOPIC='SENSOR_STATUS_DETAILS', VALUE_FORMAT='JSON', KEY='sensorid');
正在制作的rowkey ksqlDB如下:
我希望 rowkey 是sensorid .... 我不知道发生了什么
请帮助我。
提前致谢!!
PS:
汇合平台版本:5.5
解决方案
这里的问题是生成到 Kafka 主题的数据SENSOR_STATUS_DETAILS
有一个STRING
键,而不是INT
键。
如果您使用它,STRING
"1001"
它恰好会序列化为与INT
. 如果你反序列化那些与你相同的字节,INT
你会得到 number 825241649
。
你有两个选择:
- 更改生成数据的方式,以便生成序列化的 32 位整数作为 Kafka 消息的密钥并继续导入为
ROWKEY INT KEY
,或 更改您的
CREATE TABLE
语句以获取STRING
密钥:CREATE TABLE STATUS_IB_TABLE ( ROWKEY STRING KEY, // <-- string key sensorid STRING, // <-- matching type here. status VARCHAR, lastconnectedtime STRING ) WITH (<as above>);
第一个选项可能会导致性能稍好
推荐阅读
- node.js - 项目初始化时出现 Stenciljs 错误
- html - 悬停在选框上不适用于单个单词
- maven - wagon-maven-plugin:1.0:download-single 无法下载资源
- kubernetes - 从 GKE 1.15 更新到 1.16 时的 Prometheus (node_exporter) 问题
- python - 在同一选项卡中使用 pywhatkkit 而不是使用新的
- google-cloud-platform - 需要 GCP 虚拟机实例的启动和停止时间
- c# - 根据多个条件通过 linq 过滤集合
- postgresql - 如何在for循环中实现执行命令-postgres,dbeaver
- ios - 视频不在 AVPlayer 或 safari 中播放,但在 chrome 中播放
- python - (PythonCrashCourse) 外星人入侵高分