0

我在 Kubernetes 集群的容器中运行了 confluent kafka、zookeeper、schema-registry 和 ksql。Kafka、zookeeper 和模式注册表工作正常,可以创建主题并以 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 字符串的情况下启动服务器,但没有运气

4

2 回答 2

2

您必须设置配置ksql.schema.registry.url(请参阅KSQL v0.5 文档)。

仅供参考:我们将为 Avro 在 KSQL 中的使用以及 Confluent Schema 注册表与 4 月初即将发布的 KSQL GA 版本(作为 Confluent Platform 4.1 的一部分)的集成提供更好的文档。

我不知道如何检查版本,但我正在使用 docker image confluentinc/ksql-cli(我认为它是 0.5)。对于 Kafka,我使用了 Confluent Kafka Docker image 4.0.0

  • KSQL 服务器在启动时显示版本。
  • 如果您看不到 KSQL 服务器启动消息,您还可以通过在 KSQL CLI 提示符 ( ksql> VERSION) 中输入“VERSION”来检查 KSQL 版本。
于 2018-03-19T10:53:57.600 回答
1

根据KSQLConfig 类,您应该使用该ksql.schema.registry.url属性来指定 Schema Registry 的位置。

至少从 v0.5 开始就是这种情况。

还值得注意的是,目前不支持直接使用 RESTful API。因此,您可能会发现版本之间的 API 更改。

于 2018-03-19T10:32:43.603 回答