我目前正在从事一个项目,以扩展SQL的功能,以支持基于Apache Flink的更多流计算功能。
经过大量搜索之后,我发现Calcite是帮助我解析,验证和优化这些SQL查询的好工具,但是Calcite的流支持仍然不成熟,因此我必须对其进行改进以满足自己的需求。
因此,我想知道是否有添加自定义子句的方法
CREATE TABLE my_table (
id bigint,
user varchar(20)
) PARAMS (
connector 'kafka',
topic 'my_topic'
)
它使用PARAMS定义如何从Kafka连接器接收数据并将其像动态表一样视为Flink的数据源。
由于此方面的信息很少,如果你们中的某人可以提供一些提示,我将不胜感激。
谢谢 : )
最佳答案
在最新版本(2017年12月11日,1.15.0)之前,Apache Calcite不支持DDL语句,例如CREATE TABLE
或DROP TABLE
。原因是
SELECT和DML是标准化的,但DDL倾向于
特定于数据库的,因此我们的政策是您进行DDL扩展
方解石之外。
(请参见Calcite dev mailing list)。
在Calcite 1.15.0中,社区添加了basic support for DDL statements。该功能已作为可选模块实现,并显示了如何自定义DDL语句(请参见documentation)。因此,仍然期望使用Calcite的系统可以根据需要自定义解析器和DDL语法。