开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

开源flink都是可以通过这个来创建,但在blink上试用TableApi去这样写,就报错,为什么?

开源flink都是可以通过tableEvn.sqlUpdate("create table")来创建表的但是今天在blink上试了用TableApi去这样写,就报错,为什么?Unsupported SQL query! sqlUpdate() only accepts SQL statements of type INSERT and DELETE.是什么情况,不支持用代码的方式执行create语句吗,那只能用blink开发平台的sql脚本?699f15b11f4dc7bfed18a12f75ba0fa6.png

展开
收起
三分钟热度的鱼 2023-11-01 09:22:44 63 0
3 条回答
写回答
取消 提交回答
  • FLink SQL API 支持两种模式,分别是 SQL 查询和 SQL 更新操作。您可以使用 TableEnvironment.sqlUpdate() 方法来执行 SQL 更新操作,如 INSERT 和 DELETE,而不支持 CREATE TABLE 等 DDL 语句。这是因为 SQL UPDATE 操作涉及到了数据的修改和更新,而 DDL 语句只涉及到数据库表结构的操作。

    要执行 CREATE TABLE 语句,您可以使用 TableEnvironment.executeSql() 方法。请参考以下示例:

    String createTableSql = "CREATE TABLE my_table (id BIGINT, name STRING)";
    tableEnv.executeSql(createTableSql);
    

    此方法支持所有的 SQL 语句,包括 SELECT、INSERT、UPDATE 和 DELETE 等。如果您希望用代码的方式来执行 CREATE 语句,请使用这种方法。

    2023-11-01 22:02:38
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Table API 只支持 INSERT 和 DELETE 类型的 SQL 语句,不支持 CREATE 类型的 SQL 语句。这是由于 Table API 的设计理念与 SQL 有所不同,旨在使开发者更容易使用 Flink 编程接口,而不必考虑 SQL 的细节。
    因此,如果您需要执行 CREATE 类型的 SQL 语句,建议您使用 SQL CLI 或者 Blink SQL Console 等工具来完成。

    2023-11-01 13:27:11
    赞同 展开评论 打赏
  • 根据您提供的信息,错误提示显示“Unsupported SQL query! sqlUpdate() only accepts SQL statements of type INSERT and DELETE。”这意味着在 blink 版本上,TableApi 的 sqlUpdate() 方法只支持 INSERT 和 DELETE 类型的 SQL 语句,而不支持 CREATE 类型的语句。

    在 Flink 的 TableAPI 中,sqlUpdate() 方法用于执行更新语句,例如 INSERT、DELETE、UPDATE 等操作。然而,根据 blink 版本的规定,该方法不支持 CREATE 类型的 SQL 语句。因此,您无法使用 TableAPI 的 sqlUpdate() 方法来执行 CREATE TABLE 语句。

    要解决这个问题,您可以使用 blink 版本的 SQL API 来执行 CREATE TABLE 语句。根据您的描述,您已经尝试过使用 TableAPI 的 sqlUpdate() 方法来执行 CREATE TABLE 语句,并遇到了错误。因此,您应该尝试使用 SQL API 来执行相同的操作。

    在 blink 版本中,您可以使用 blink 的 SQL API 来执行任意的 SQL 语句,包括 CREATE TABLE 语句。具体的实现方式取决于您使用的编程语言和 blink 版本的具体支持情况。您可以参考 blink 版本的文档或示例代码,了解如何使用 SQL API 来执行 CREATE TABLE 语句。

    另外,如果您希望使用 TableAPI 来创建表,您可以尝试使用 TableFactory 或者 Catalog API 来实现。这些 API 可以让您以编程方式创建和管理表。具体的实现方式可以参考 Flink 的官方文档或示例代码。

    总之,根据您提供的信息,错误提示是由于 blink 版本对 sqlUpdate() 方法的限制导致的。要解决这个问题,您应该尝试使用 blink 的 SQL API 或其他适合的 API 来执行 CREATE TABLE 语句。

    2023-11-01 11:56:03
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载