通过kafka-topics创建的主题是否应该自动创建关联的主题?

时间:2019-12-17 00:27:39

标签: apache-kafka avro confluent-schema-registry ksql kafka-rest

我正在尝试模仿“汇合负载”(不建议用于生产用途)以添加连接器,该连接器会自动创建允许创建ksql流和表的主题,主题等。我正在使用curl与其余界面进行交互。

  1. 使用kafka-topics创建主题时,还会为"topicName-value"等创建关联的主题吗?
$ curl -X GET http://localhost:8082/topics | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   199  100   199    0     0  14930      0 --:--:-- --:--:-- --:--:-- 15307
[
  "Topic_OracleSource2"
]

curl -X GET http://localhost:8081/subjects | jq

[]

什么都没显示。但是,执行卷曲操作:

curl -X POST -H "Content-Type: application/vnd.kafka.avro.v2+json"       -H "Accept: application/vnd.kafka.v2+json"       --data '{"value_schema": "{\"type\": \"record\", \"name\": \"User\", \"fields\": [{\"name\": \"name\", \"type\": \"string\"}]}", "records": [{"value": {"name": "testUser"}}]}'       "http://localhost:8082/topics/avrotest"

创建主题:

curl -X GET http://localhost:8081/subjects | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    18  100    18    0     0   2020      0 --:--:-- --:--:-- --:--:--  2250
[
  "avrotest-value"
]

据我所知,不建议这样做,因为主题是即时创建的,而不是在受控环境中预先创建的。

  1. 出现此问题的原因是,似乎需要主题'topicName-value/key'对来为KSQL内部的主题创建流。

没有主题,我只能看到创建的基于avro的连接器附带的数据,但是无法进一步使用ksql流和表执行转换。

2 个答案:

答案 0 :(得分:1)

kafka-topics仅与Zookeeper和Kafka互动。它不存在模式注册表的概念。

创建Avro模式/主题的过程是通过生产者进行的Avro序列化程序配置。如果使用AvroConverter配置了Kafka Connect源,则它将在获取数据时自行注册架构,因此,假设您对生成的架构感到满意,则无需卷曲,就可以

据我所知,无法阻止KSQL在注册表中自动注册模式。

  

似乎需要主题“ topicName-value / key”对来为KSQL内部的主题创建流。

如果要使用Avro,可以。但是,并非“需要” KSQL支持的其他数据格式

此外,我最后一次检查,KSQL无法处理Avro密钥

  

无法进一步使用ksql流和表执行转换。

您需要更清楚地说明原因。您收到错误了吗?

答案 1 :(得分:0)

  

使用kafka-topics创建主题时,还会创建“ topicName-value”等相关主题吗?

否,不会自动创建主题。 (kafka-topics今天甚至不允许您传递Avro模式。)

可能值得进行功能请求吗?