我一直在尝试在Flink SQL客户端中SOURCE
一个包含SQL语句的文件。来自文档:
SOURCE从文件中读取SQL SELECT查询并在Flink集群上执行。
这使用Flink 1.13.1版本、Scala 2.11的Docker镜像。据我所知,这个Flink发行版的其他一切都很好。
集装箱内:
/opt/flink# echo "select 'hello';" > test.sql
/opt/flink# sql-client.sh
然后在sql客户端中:
Flink SQL> select 'hello';
-- works as intended
[INFO] Result retrieval cancelled.
Flink SQL> source test.sql;
[ERROR] Could not execute SQL statement. Reason:
org.apache.calcite.runtime.CalciteException: Non-query expression encountered in illegal context
我确信这是一个非常明显的错误。我错过了什么?
SOURCE命令在早期版本中不是公共API,已在1.13中删除。作为替代方案,我们提供了sql-client.sh -f test.sql
来执行SQL文件,这是其他系统中广泛使用的一种方式。查看更多信息:https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/table/sqlclient/#execute-sql文件