我正在尝试以无头模式测试ksql。
我在查询文件中添加了创建表查询,并启动了服务器,

$path-to-ksql/bin/ksql-server-start \
  $path-to-ksql/etc/ksql/ksql-server.properties \
  --queries-file /tmp/ksql-queries/queries.sql \
  >path-to-logdirectory/ksql-server-1_`date '+%Y%m%d_%H_%M_%S'`.log 2>&1 &


查询文件具有以下查询。

create table TABLE_NAME  as
  select a, min(b)
  from STREAM_NAME
  WINDOW TUMBLING (size 1 minute)
  group by a;


但是,我在日志中遇到以下异常。

Exception in thread "main" io.confluent.ksql.parser.exception.ParseFailedException: Parsing failed on KsqlEngine msg: STREAM_NAME does not exist.
        at io.confluent.ksql.KsqlEngine.parseQueries(KsqlEngine.java:278)
        at io.confluent.ksql.KsqlEngine.createQueries(KsqlEngine.java:593)


但是,当我以交互方式运行相同的查询时,它执行得很好。
注意:ksql中已经存在流。
我正在运行4.1.0 CLI验证。

最佳答案

在运行STREAM_NAME语句之前,必须在/tmp/ksql-queries/queries.sql中定义输入流(此处为CREATE TABLE)。

这是因为无头的KSQL群集/部署不知道您在其他交互式KSQL群集中定义的流/表。

09-27 14:54