我正在使用融合的掌舵图在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,错误均保持不变,并且我没有此主题的架构。
答案 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,则必须显式声明架构。