【发布时间】:2021-02-24 07:07:48
【问题描述】:
我正在尝试使用以下代码(bash 脚本)通过其 REST 接口使用(Confluent)ksqldb-server 创建一个 kafka 表:
KSQLDB_COMMAND="CREATE TABLE sample_table \
(xkey VARCHAR, \
xdata VARCHAR) \
WITH (KAFKA_TOPIC=\'sample-topic\', \
VALUE_FORMAT=\'JSON\', \
KEY=\'xkey\'); "
COMMAND="curl -X 'POST' '$KSQLDB_SERVER' \
-H 'Content-Type: application/vnd.ksql.v1+json; charset=utf-8' \
-d '{ \"ksql\": \"$KSQLDB_COMMAND\" }' "
eval $COMMAND
返回如下错误输出信息:
{"@type":"statement_error","error_code":40001,"message":"Failed to prepare statement: Invalid config variable(s) in the WITH clause: KEY","statementText":"CREATE TABLE sample_table (xkey VARCHAR, xdata VARCHAR) WITH (KAFKA_TOPIC='sample-topic', VALUE_FORMAT='JSON', KEY='xkey');","entities":[]}%
该错误表明实际语句中存在错误,尤其是 KEY 属性。
我可以使用 REST 接口获取基本命令(“LIST STREAMS”等)但无法创建表,所以我认为这是 KSQL 语句或我如何创建 bash 命令(在“COMMAND”中)的问题变量)。
感谢任何帮助。
【问题讨论】:
-
这只是一个 bash 字符串变量。请显示您的实际 REST 调用
-
抱歉...我添加了命令执行...
-
根据文档,您应该将
PRIMARY KEY放在列上,而不是在 WITH docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/… -
您提供的链接上的已检查文档...站点页面底部的示例具有“WITH”子句,因此从我所看到的情况来看,这不是问题...话虽如此,我尝试按照您的说明添加 PRIMARY KEY 并得到相同的错误。
-
该页面上没有示例将
KEY放在 WITH 正文中,因为您收到的错误表明问题是问题,而不是您的 bash 语法
标签: apache-kafka confluent-platform ksqldb