sparksql-cache小表实现mapjoin优化性能

简介:
  对于复杂sql且关联表较多的情况,数据倾斜是很常见的问题,几乎可以说不倾斜才是少见情况,而在不能改变原始数据(不能采用多阶段分段聚合),不能改变spark源码的情况下,除了调整各种参数,可操作的空间并不多。
对于表之间的join操作,一般来说我们都知道有map join和reduce join两种情况。因为reduce端会按map输出的key的分布处理相应的数据,在数据倾斜的情况下就会造成单个task压力过大,拖累整个job时间,甚至OOM等诸多问题。而如果能在map端完成join,就会极大的减小reduce端的压力,提升并行度。
  map端的join适用于在join的表比较小的情况,另外如字典表这种的与其他表join时,因为本身数据就很少,势必会造成数据严重的倾斜,因而这种情况下使用map端的join就再适合不过。在sparksql中,并没有直接提供如map join之类的关键字,但是也不是没有办法,spark提供了broadhashjoin。要注意的是单纯设置broadcastjoin的大小并没有效果,看下面这个例子,这是一张大表和一个字典表的join,可以看到,两张表的处理是一样的,join在reduce端,从实际的运行情况看,也如预料的一样,倾斜严重。
86bb938da16bc05802678889fb20667f251a7c2b
  我的项目里使用的是hivecontext,就是spark on hive,因而实现map join的方式就是讲小表进行cache,然后再做查询,看下优化后的执行计划,变成一个stage了,实际的运行时间也提升明显。原来的sql不需要修改,只需要对小表执行 CACHE TABLE xx as select * from xx
69409383972c54a42087ebe35b1eacd31ab80696
      
目录
相关文章
|
5月前
|
缓存 定位技术 数据库
如何优化大表的查询速度?
如何优化大表的查询速度
57 1
|
5月前
|
SQL 存储 关系型数据库
ADBPG&Greenplum成本优化问题之查询大表的dead tuple占比和空间如何解决
ADBPG&Greenplum成本优化问题之查询大表的dead tuple占比和空间如何解决
39 1
|
8月前
|
小程序 数据库
小程序连表查询(lookup
该文介绍了小程序实现连表查询的步骤。首先展示效果图,然后通过创建数据库表和云函数来完成连表查询,其中云函数使用了`aggregate`、`match`、`lookup`方法连接'zuowei'和'eara'表。接着,将云函数部署并调用,通过`wx.cloud.callFunction`获取查询结果。最后提醒读者点赞并邀请访问作者个人网站。
110 2
|
8月前
|
存储 SQL 分布式计算
性能优化:Spark SQL中的谓词下推和列式存储
性能优化:Spark SQL中的谓词下推和列式存储
|
分布式计算 数据安全/隐私保护 Spark
spark 数据倾斜遇到过吗,如何解决数据倾斜?【重要】
spark 数据倾斜遇到过吗,如何解决数据倾斜?【重要】
127 0
|
分布式计算 Spark
spark full outer join 数据倾斜导致OOM
spark full outer join 数据倾斜导致OOM
110 0
|
SQL 分布式计算 算法
Apache Spark 2.2中基于成本的优化器(CBO)
Apache Spark 2.2中基于成本的优化器(CBO)
261 0
Apache Spark 2.2中基于成本的优化器(CBO)
|
存储 SQL 分布式计算
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多,所以我们需要把常常用在 WHERE 语句中的字段指定为表的分区字段。
394 0
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
|
SQL 存储 关系型数据库
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(三)
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(三)
276 0
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(三)
|
SQL 关系型数据库 MySQL
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(一)
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(一)
225 0
MYSQL性能调优06_分页查询优化、JOIN关联查询优化、in和exsits优化、count(*)查询优化(一)

热门文章

最新文章

下一篇
开通oss服务