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

请教一下: flinksql 中有类似 join /* + BROADCAST(small_ta

请教一下:

flinksql 中有类似 join /* + BROADCAST(small_table) */ 这样的Hint 语法 ? 想要Join一个更新频率不高的小维表, 用broadcast的方式

展开
收起
云问追踪 2023-03-31 11:57:01 945 0
4 条回答
写回答
取消 提交回答
  • Flink SQL 中确实有类似这样的 Join Hint 语法来指定 Broadcast Join,可以将小表进行广播,以提高 Join 的性能。具体语法如下:

    SELECT /*+ BROADCAST(small_table) */ * FROM big_table JOIN small_table ON big_table.key = small_table.key; 其中,BROADCAST(small_table) 表示要对 small_table 进行广播;big_table 表示要进行 Join 的主表,small_table 表示要进行 Join 的小表,key 表示两个表连接的字段。通过这种方式,可以将 small_table 广播到每个并行实例中,以提高 Join 的性能。需要注意的是,BROADCAST Hint 适用于 small_table 更新频率不高的情况下,如果 small_table 更新频率过高,可能会导致性能下降,应该谨慎使用。

    另外,需要注意的是,BROADCAST Hint 在 Flink 1.11 版本中才被支持,如果使用的版本较低,可能会出现不兼容等问题。

    2023-04-02 08:38:05
    赞同 展开评论 打赏
  • 参考:https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/sql/queries/hints/#join-hints

    此答案来自钉钉群“【2】Apache Flink China 社区”

    2023-03-31 17:10:12
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    可以使用Broadcast方式来Join一个更新频率不高的小维表。 具体使用方法如下:

    plaintext

    SELECT /* + BROADCAST(small_table) */ * FROM big_table JOIN small_table ON big_table.key = small_table.key

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

    你好,Flink SQL 中也支持 BROADCAST hint 语法,可以使用类似于下面的 SQL 语句进行 Join 操作:

    SELECT /*+ BROADCAST(small_table) */ *
    FROM large_table
    JOIN small_table
    ON large_table.key = small_table.key;
    
    
    2023-03-31 12:12:30
    赞同 展开评论 打赏

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载