KsqlStatementException:语句未定义架构,并且提供的格式不支持架构推断

时间:2019-12-10 15:47:20

标签: confluent ksql

我正在使用融合的掌舵图在kubernetes上使用ksql服务器。

https://github.com/confluentinc/cp-helm-charts/tree/master/charts/cp-ksql-server

我为自己的个人用例修改了querys.sql文件。 https://github.com/confluentinc/cp-helm-charts/blob/master/charts/cp-ksql-server/queries.sql

这是我的查询

CREATE STREAM ksql_test WITH (kafka_topic='orders-topic', value_format='DELIMITED', partitions='1', replicas='3');

一旦我部署了这个吊舱,就会出现此错误:

ERROR Failed to start KSQL Server with query file: /etc/ksql/queries/queries.sql (io.confluent.ksql.rest.server.StandaloneExecutor:124)
io.confluent.ksql.util.KsqlStatementException: statement does not define the schema and the supplied format does not support schema inference
Statement: CREATE STREAM ksql_test WITH (kafka_topic='orders-topic', value_format='DELIMITED', partitions='1', replicas='3');

无论我是否将格式更改为JSON,错误均保持不变,并且我没有此主题的架构。

1 个答案:

答案 0 :(得分:1)

这是问题所在:

  

声明未定义架构

KSQL 是Kafka主题架构。没有架构,没有流。

如果您的数据是定界的,也许看起来像这样:

1,FOO,0.1,400

具有模式,也许像这样:

CREATE STREAM example (COL1 INT, LABEL VARCHAR, WIBBLE DOUBLE, TARGET BIGINT)
WITH (KAFKA_TOPIC='example_topic',  VALUE_FORMAT='DELIMITED);

tl; dr,如果没有模式,您将无法创建流。如果您使用的是Avro,则已经有一个模式(在“模式注册表”中),因此不必声明它。如果使用的是JSON或Delimited,则必须显式声明架构。