ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sparksql优化之join

2021-11-07 16:00:46  阅读:239  来源: 互联网

标签:streamIter join com 查找 buildIter sparksql SQL 优化


文章目录

前言

本文是以下两篇文章的总结。
Spark SQL join的三种实现方式 - 多读书多看报 - 博客园 (cnblogs.com)

Spark SQL 之 Join 实现 - 云+社区 - 腾讯云 (tencent.com)


1 概念:流式遍历表(streamIter)和查找表(buildIter)

流式遍历表(streamIter)和查找表(buildIter)的概念见Spark SQL 之 Join 实现 - 云+社区 - 腾讯云 (tencent.com)

一般streamlter是大表,bulidler是小表

2 概念:sparksql种3种join的实现方式

sort merge join:有shuffle操作,适用于两张大表

broadcast join:把bulidler表广播到每个executor里,所以builder表应该小一点,sparks中默认builder表小于10M时使用broadcast join方法,适用于大表+小表

hash join:默认不开启,开启了sort merge join也比它差不了太多,适用于大表+小表(比broadcast的小表略大)

3 4种join方式

inner join:我们在写sql语句或者使用DataFrmae时,可以不用关心哪个是左表,哪个是右表,在spark sql查询优化阶段,spark会自动将大表设为左表,即streamIter,将小表设为右表,即buildIter。

left outer join是以左表为准,在右表中查找匹配的记录,如果查找失败,则返回一个所有字段都为null的记录。我们在写sql语句或者使用DataFrmae时,一般让大表在左边,小表在右边

right outer join是以右表为准,在左表中查找匹配的记录,如果查找失败,则返回一个所有字段都为null的记录。所以说,右表是streamIter,左表是buildIter,我们在写sql语句或者使用DataFrmae时,一般让大表在右边,小表在左边

full outer join 不用关心左表右表

参考文献

Spark SQL join的三种实现方式 - 多读书多看报 - 博客园 (cnblogs.com)

Spark SQL 之 Join 实现 - 云+社区 - 腾讯云 (tencent.com)

标签:streamIter,join,com,查找,buildIter,sparksql,SQL,优化
来源: https://blog.csdn.net/nanfeizhenkuangou/article/details/121192365

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有