3

我目前正在做一个项目来扩展 SQL 的功能,以支持更多基于 Apache Flink 的流计算功能。

经过大量搜索,我发现 Calcite 是一个很好的工具,可以帮助我解析、验证和优化这些 SQL 查询,但是 Calcite 的流式支持仍然不成熟,所以我必须对其进行改进以满足我的需求。

因此,我想知道是否有办法添加自定义子句,例如

CREATE TABLE my_table (
    id   bigint,
    user varchar(20)
) PARAMS (
    connector 'kafka',
    topic     'my_topic'
)

它使用 PARAMS 来定义如何从 Kafka 连接器接收数据,并将其视为动态表作为 Flink 的数据源。

由于这方面的信息很少,如果有人能提供一些提示,我将不胜感激。

谢谢 : )

4

1 回答 1

4

在最新版本(1.15.0,2017 年 12 月 11 日)之前,Apache Calcite 不支持 DDL 语句,例如CREATE TABLEDROP TABLE. 原因是

SELECT 和 DML 是标准化的,但 DDL 往往是特定于数据库的,因此我们的政策是您在 Calcite 之外进行 DDL 扩展。

(请参阅Calcite 开发邮件列表)。

在 Calcite 1.15.0 中,社区添加了对 DDL 语句的基本支持。该功能作为可选模块实现,并展示了如何自定义 DDL 语句(请参阅文档)。因此,仍然希望使用 Calcite 的系统根据自己的需要自定义解析器和 DDL 语法。

于 2018-01-08T08:52:59.813 回答