当前位置: 首页 > news >正文

spark 中hint使用总结

在spark sql 中用户可以使用Join hint来建议Spark使用哪一种Join。在Spark 3.0以前,只支持BROADCAST这种Join hint。从Spark 3.0开始增加了MERGE、SHUFFLE_HASH和SHUFFLE_REPLICATE_NL这三种Join Hint。优先级为BROADCAST > MERGE > SHUFFLE_HASH > SHUFFLE_REPLICATE_NL。如果Join的两侧都添加了BROADCAST或者SHUFFLE_HASH,则Spark会根据joinType和两侧的大小来选择build哪一侧。

-- Join Hints for broadcast join
SELECT /*+ BROADCAST(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
SELECT /*+ BROADCASTJOIN (t1) */ * FROM t1 left JOIN t2 ON t1.key = t2.key;
SELECT /*+ MAPJOIN(t2) */ * FROM t1 right JOIN t2 ON t1.key = t2.key;-- Join Hints for shuffle sort merge join
SELECT /*+ SHUFFLE_MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
SELECT /*+ MERGEJOIN(t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
SELECT /*+ MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;-- Join Hints for shuffle hash join
SELECT /*+ SHUFFLE_HASH(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;-- Join Hints for shuffle-and-replicate nested loop join
SELECT /*+ SHUFFLE_REPLICATE_NL(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;-- When different join strategy hints are specified on both sides of a join, Spark
-- prioritizes the BROADCAST hint over the MERGE hint over the SHUFFLE_HASH hint
-- over the SHUFFLE_REPLICATE_NL hint.
-- Spark will issue Warning in the following example
-- org.apache.spark.sql.catalyst.analysis.HintErrorLogger: Hint (strategy=merge)
-- is overridden by another hint and will not take effect.
SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;

spark hint 中使用关系:https://blog.51cto.com/u_15435003/5296344

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python:正则表达式相关整理
  • volatile关键字详解
  • 核密度估计KDE和概率密度函数PDF(深入浅出)
  • 智能家居开发新进展:乐鑫 ESP-ZeroCode 与亚马逊 ACK for Matter 实现集成
  • Python高级(四)_内存管理
  • 在VSCode上创建Vue项目详细教程
  • WIN11实现链路聚合/端口聚合
  • 华为HCIP Datacom H12-821 卷38
  • WPF透明置顶窗口wine适配穿透问题解决
  • 【探索LangGraph:构建多专家协作模型】
  • Eureka: Netflix开源的服务发现框架
  • 简谈设计模式之原型模式
  • conda install问题记录
  • 昇思25天学习打卡营第19天|应用实践之基于MobileNetv2的垃圾分类
  • Rust vs Go: 特点与应用场景分析
  • 【comparator, comparable】小总结
  • 【个人向】《HTTP图解》阅后小结
  • Android优雅地处理按钮重复点击
  • Angular 4.x 动态创建组件
  • Angular2开发踩坑系列-生产环境编译
  • Angular4 模板式表单用法以及验证
  • co.js - 让异步代码同步化
  • Git初体验
  • iOS小技巧之UIImagePickerController实现头像选择
  • JS 面试题总结
  • js中forEach回调同异步问题
  • nodejs调试方法
  • PHP 7 修改了什么呢 -- 2
  • react 代码优化(一) ——事件处理
  • SegmentFault 2015 Top Rank
  • spring boot 整合mybatis 无法输出sql的问题
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 阿里云购买磁盘后挂载
  • 搭建gitbook 和 访问权限认证
  • 给新手的新浪微博 SDK 集成教程【一】
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于遗传算法的优化问题求解
  • 简单实现一个textarea自适应高度
  • 利用DataURL技术在网页上显示图片
  • 前端面试题总结
  • 区块链共识机制优缺点对比都是什么
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 系统认识JavaScript正则表达式
  • 学习JavaScript数据结构与算法 — 树
  • 正则表达式
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • # Redis 入门到精通(七)-- redis 删除策略
  • #if和#ifdef区别
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (SERIES12)DM性能优化
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (力扣)1314.矩阵区域和