ksqlDB 没有正确使用 rowkey
ksqlDB not taking rowkey properly
我在 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"
}
我正在尝试从中制作一个 table 作为:
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');
ksqlDB 生成的行键如下:
我希望 rowkey 是 sensorid...
我不知道发生了什么
请帮我解决这个问题。
提前致谢!!
PS:
Confluent 平台版本:5.5
这里的问题是为 Kafka 主题 SENSOR_STATUS_DETAILS
生成的数据有一个 STRING
键,而不是 INT
键。
如果您采用 STRING
"1001"
,它恰好序列化为与 INT
相同的字节数。如果你反序列化那些与 INT
相同的字节,你会得到数字 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>);
第一个选项可能会带来更好的性能
我在 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"
}
我正在尝试从中制作一个 table 作为:
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');
ksqlDB 生成的行键如下:
我希望 rowkey 是 sensorid... 我不知道发生了什么
请帮我解决这个问题。
提前致谢!!
PS:
Confluent 平台版本:5.5
这里的问题是为 Kafka 主题 SENSOR_STATUS_DETAILS
生成的数据有一个 STRING
键,而不是 INT
键。
如果您采用 STRING
"1001"
,它恰好序列化为与 INT
相同的字节数。如果你反序列化那些与 INT
相同的字节,你会得到数字 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>);
第一个选项可能会带来更好的性能