我已经开始与KSQL
一起工作,并且非常有经验。我正在尝试使用表和流联接,情况如下。
我有一个这样的样本数据集:
"0117440512","0134217727","US","United States","VIRGINIA","Vienna","DoD Network Information Center"
"0134217728","0150994943","US","United States","MASSACHUSETTS","Woburn","Genuity"
在我的卡夫卡主题1中。是将静态数据集加载到Table,并且可能在一个月左右的时间里更新一次。
我还有另外一个数据集,例如:
{"state":"AD","id":"020","city":"Andorra","port":"02","region":"Canillo"}
{"state":"GD","id":"024","city":"Arab","port":"29","region":"Ordino"}
在kafka主题2中。是将数据流加载到流中吗?
由于无法在未指定键的情况下创建Table
,因此我的数据没有唯一的列。因此,在将数据从topic-1加载到Table时,我的密钥到底应该是什么?请记住,我的表可能每个月使用相同的数据进行填充/更新一次,并且也一次使用新的数据进行更新。加载新数据后,我可以用密钥替换它们。
我尝试查找是否有类似增量值(在SQL中称为PrimaryKey
),但没有找到。
有人可以帮助我更正我的实现方法或查询以创建PrimaryKey
(如果存在)的方法。谢谢
答案 0 :(得分:0)
不,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"
See here了解更多详情。