【问题标题】:Does Apache Calcite provide a way to add custom clauses or statements?Apache Calcite 是否提供添加自定义子句或语句的方法?
【发布时间】:2018-01-06 02:13:41
【问题描述】:

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

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

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

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

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

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

谢谢你:)

【问题讨论】:

    标签: sql streaming apache-flink flink-streaming apache-calcite


    【解决方案1】:

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

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

    (见Calcite dev mailing list)。

    在 Calcite 1.15.0 中,社区添加了basic support for DDL statements。该功能作为可选模块实现,并展示了如何自定义 DDL 语句(请参阅documentation)。因此,使用 Calcite 的系统仍然可以根据自己的需要自定义解析器和 DDL 语法。

    【讨论】:

    • 我查看了 calcite-server 代码,但无法弄清楚是否有办法从模式中获取 SQL DDL 查询。只是为了给你更多的上下文,我已经使用一些配置文件创建了一个模式和表。现在,我想知道是否可以通过某种方式获得用于创建 SQL 表的 DDL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多