我在kubernetes集群上的容器中运行了kafka,zookeeper,schema-registry和ksql。 Kafka,zookeeper和schema注册表运行正常,可以创建主题并以Avro格式写入数据,但是当我尝试检查ksql并创建一些像curl一样的流式传输时:
curl -XPOST http://ksql-svc.someapp:8080/ksql -H "Content-Type: application/json" -d $'
{"ksql": "CREATE STREAM kawabanga_stream (log_id varchar, created_date varchar) WITH (kafka_topic = '\'kawabanga\'', value_format = '\'avro\'');","streamsProperties":{}}'
我收到错误:
[{"error":{"statementText":"CREATE STREAM kawabanga_stream (log_id varchar, created_date varchar) WITH (kafka_topic = 'kawabanga', value_format = 'avro');","errorMessage":{"message":"Avro schema file path should be set for avro topics.","stackTrace":["io.confluent.ksql.ddl.commands.RegisterTopicCommand.extractTopicSerDe(RegisterTopicCommand.java:75)","io.confluent.ksql.ddl.commands.RegisterTopicCommand.<init>
请在下面找到我的ksql服务器配置:
# cat /etc/ksql/ksqlserver.properties
bootstrap.servers=kafka-0.kafka-hs:9093,kafka-1.kafka-hs:9093,kafka-
2.kafka-hs:9093
schema.registry.host=schema-svc
schema.registry.port=8081
ksql.command.topic.suffix=commands
listeners=http://0.0.0.0:8080
此外,我尝试在没有schema.registry字符串但没有运气的情况下启动服务器
答案 0 :(得分:2)
您必须设置配置ksql.schema.registry.url
(请参阅KSQL v0.5 documentation)。
仅供参考:我们将在4月初(作为Confluent Platform 4.1的一部分)提供更好的文档,用于在KSQL中使用Avro以及与即将发布的KSQL版本的Confluent Schema注册表集成。
我不知道如何检查版本,但我使用的是docker image confluentinc / ksql-cli(我认为它是0.5)。对于Kafka,我使用了Confluent Kafka Docker image 4.0.0
ksql> VERSION
)中输入“VERSION”来检查KSQL版本。答案 1 :(得分:1)
根据KSQLConfig class,您应该使用ksql.schema.registry.url
属性来指定架构注册表的位置。
至少从v0.5开始就是这种情况。
值得注意的是,目前还不支持直接使用RESTful API。因此,您可能会发现版本之间的API更改。