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

一个Flink程序中,可以写多个"inesrt"语句吗

一个Flink程序中,可以写多个"inesrt"语句吗

展开
收起
JWRRR 2023-04-03 15:20:02 545 0
4 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    Flink SQL支持在一个程序中写多个insert语句,可以将一个查询的结果插入到多个表中,也可以将多个查询的结果插入到不同的表中。有两种方式可以执行多个insert语句:

    • 使用StatementSet对象,可以添加多个insert语句,然后一次性执行。这种方式可以优化执行计划,避免重复计算。
    • 使用executeSql()方法,可以逐条执行insert语句。这种方式会为每条insert语句提交一个Flink作业,可能会造成资源浪费。

    以下是一个使用StatementSet对象执行多个insert语句的示例:

    // 注册一个 "Orders" 源表,和 "RubberOrders" 和 "GlassOrders" 结果表
    tEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");
    tEnv.executeSql("CREATE TABLE RubberOrders (product STRING, amount INT) WITH (...)");
    tEnv.executeSql("CREATE TABLE GlassOrders (product STRING, amount INT) WITH (...)");
    
    // 运行多个 INSERT 语句,将原表数据输出到多个结果表中
    StatementSet stmtSet = tEnv.createStatementSet();
    // `addInsertSql` 方法每次只接收单条 INSERT 语句
    stmtSet.addInsertSql(
        "INSERT INTO RubberOrders SELECT product, amount FROM Orders WHERE product LIKE '%Rubber%'");
    stmtSet.addInsertSql(
        "INSERT INTO GlassOrders SELECT product, amount FROM Orders WHERE product LIKE '%Glass%'");
    // 执行刚刚添加的所有 INSERT 语句
    TableResult tableResult = stmtSet.execute();
    
    2023-04-23 22:59:33
    赞同 展开评论 打赏
  • "tableEnv.createStatementSet()批量insert 类似这种 tableEnv.createStatementSet() .addInsert(""aaa"", table1) .addInsert(""bbb"", table2) .addInsert(""ccc"", table3) .execute();此回答整理自钉群“【③群】Apache Flink China社区”"

    2023-04-03 16:46:54
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    在Flink中,您可以使用多个“insert”语句将数据插入到不同的目标中。例如,您可以将一部分数据插入到MySQL数据库中,将另一部分数据插入到Elasticsearch中。

    下面是一个示例,演示如何使用多个“insert”语句将数据插入到不同的目标中:

    DataStream<Tuple2<String, Integer>> dataStream = ... DataStreamSink<Tuple2<String, Integer>> mysqlSink = dataStream .addSink(new StreamingFileSink

    2023-04-03 15:24:23
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    可以,使用 Flink 的 Table API 或 SQL API 可以实现多个 insert 语句,使用BatchTableEnvironment 对象类。

    2023-04-03 15:24:02
    赞同 展开评论 打赏

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

相关产品

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

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