簡體   English   中英

kSQLDB 聲明鍵字段在流或表上創建隨機鍵

[英]kSQLDB Declaring Key field creates random key on Stream or Table

我正在使用 kSQLDB 並從一個主題創建一個流,當我明確聲明一個KEY我得到一個隨機的外觀值,它不是我的密鑰。 如果我刪除KEY關鍵字,我需要的值實際上是在Id列中指定的。

這是已知的行為嗎? 在我看來不合適。

topic示例負載:

{
  "id": 1000,
  "other": "hello"
}

ksql 流:

-- declare id as the key
CREATE STREAM s1 (id INT KEY, other VARCHAR) WITH (KAFKA_TOPIC='topic', VALUE_FORMAT='json');

-- omit declaring id as the key
CREATE STREAM s2 (id INT, other VARCHAR) WITH (KAFKA_TOPIC='topic', VALUE_FORMAT='json');

從聲明了 KEY 的 s1 中選擇提供以下內容。 那不是我的 1000 id:

+-----------+--------+
| id        | other  |
+-----------+--------+
| 825241648 | hello  |

從未聲明 KEY 的 s2 中選擇提供以下內容。 這是我的 1000 id:

+-----------+--------+
| id        | other  |
+-----------+--------+
| 1000      | hello  |

我試過 kSQLDB 和 CLI 版本:

  1. 0.21.0
  2. 0.20.0

有什么我在這里想念的嗎? id 對我沒有意義

你的Kafka主題中記錄的key是什么?,你是如何發布記錄的?。 在第一句中,您將 id 聲明為 KEY ,然后 KSQL 將從 kafka 記錄鍵加載 id,在第二句中,從 kafka 記錄值 json 負載加載 id 列。 可能您得到的值是 825241648,因為 Kafka 將鍵視為 int 並且內部反序列化器正在發送垃圾,因為正在讀取其他數據類型。您可以使用命令 PRINT 查看主題中的整個 Kafka 記錄,以便查看按鍵。

PRINT 'topic' FROM BEGINNING;

請記住,Kafka 記錄包含鍵和值

<KEY="some-key", VALUE= "{"id": 1000,"other": "hello"}">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM