在使用ksql创建表时primaykey的可能选项?

ttp71kqs  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(516)

我已经开始和 KSQL 很有生活经验。我正在尝试使用表和流连接,场景如下。我有这样一个示例数据集:

"0117440512","0134217727","US","United States","VIRGINIA","Vienna","DoD Network Information Center"
"0134217728","0150994943","US","United States","MASSACHUSETTS","Woburn","Genuity"

在我的Kafka主题一。是加载到表中的静态数据集,可能一个月左右更新一次。
我还有一个数据集,比如:

{"state":"AD","id":"020","city":"Andorra","port":"02","region":"Canillo"}
{"state":"GD","id":"024","city":"Arab","port":"29","region":"Ordino"}

Kafka主题二。是正在加载到流的数据流。
Table 不能在没有指定键的情况下创建,我的数据没有唯一的列。所以,在将数据从topic-1加载到表时,我的键到底应该是什么?请记住,我的表可能会在一个月左右使用相同的数据填充/更新一次,也可能会更新一次。加载新数据后,我可以用密钥替换它们。
我试着找出是否有我们所说的增值 PrimaryKey 在sql中,但没有找到任何。
有人能帮我纠正我对实现的方法或者创建一个查询的方法吗 PrimaryKey 如果存在。谢谢

ktca8awb

ktca8awb1#

不,ksql没有自递增键的概念。在将数据生成到定义ksql表的主题中时,必须定义键。
---编辑
如果要在通过kafka connect接收的消息上设置密钥,可以使用单消息转换(smt)。

"transforms":"createKey,extractInt",
            "transforms.createKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
            "transforms.createKey.fields":"id",
            "transforms.extractInt.type":"org.apache.kafka.connect.transforms.ExtractField$Key",
            "transforms.extractInt.field":"id"

请参阅此处了解更多详细信息。

相关问题