spark join broadcast优化

标签:  spark join
7人阅读 评论(0) 收藏 举报
分类:

在大量数据中对一些字段进行关联。

举例

ipTable:需要进行关联的几千条ip数据(70k) 
hist:历史数据(百亿级别)

直接join将会对所有数据进行shuffle,需要大量的io操作,相同的key会在同一个partition中进行处理,任务的并发度也收到了限制。

这里写图片描述

使用broadcast将会把小表分发到每台执行节点上,因此,关联操作都在本地完成,基本就取消了shuffle的过程,运行效率大幅度提高。

这里写图片描述

样本数据(2000w)性能测试对比

小表没有进行broadcast

无广播

进行了broadcast,可以看到连shuffle过程都省略了

这里写图片描述

实现代码(spark1.5)

//读取ip表
val df = ...

//如果数据小于设定的广播大小则将该表广播,默认10M
df.cache.count

//注册表
df.registerTempTable("ipTable")

//关联
sqlContext.sql("select * from (select * from ipTable)a join (select * from hist)b on a.ip = b.ip")

......
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

设置表广播的阈值,如果有需求且内存足够,可以将该值提高,默认10M

spark.sql.autoBroadcastJoinThreshold

查看评论

Broadcast与map进行join,避免shuffle,从而优化spark

适用场景 进行join中至少有一个RDD的数据量比较少(比如几百M,或者1-2G) 因为,每个Executor的内存中,都会驻留一份广播变量的全量数据 Broadcast与map进行join代码示例创...
  • zsw7181084
  • zsw7181084
  • 2016-08-19 21:39:19
  • 1162

spark broadcast side join实例

在用spark进行大数据处理时,join是少不了的操作。由于join会导致shuffle,所以当数据量较大时,会导致效率很低,甚至任务失败。         为了有效解决shuffle阶段引...
  • ZG_24
  • ZG_24
  • 2017-07-04 14:51:24
  • 307

Spark实践之join优化

join优化应该是spark相关岗位面试必考的内容。 join其实常见的就分为两类: map-side join 和  reduce-side join。当大表和小表join时,用map-side j...
  • asdfghjkl1993
  • asdfghjkl1993
  • 2015-07-08 10:57:05
  • 4960

Spark SQL中的broadcast join分析

本文分析Spark-1.6.2中大小表join时的broadcast机制。分析源码执行逻辑,并且对源码进行一定的调整。...
  • dabokele
  • dabokele
  • 2017-03-25 21:34:57
  • 4368

spark sql优化:小表大表关联优化 & union替换or & broadcast join

----原语句(运行18min)    SELECT            bb.ip    FROM            (                    SELECT          ...
  • zhuiqiuuuu
  • zhuiqiuuuu
  • 2018-02-08 16:14:16
  • 187

Spark map-side-join 关联优化

将多份数据进行关联是数据处理过程中非常普遍的用法,不过在分布式计算系统中,这个问题往往会变的非常麻烦,因为框架提供的 join 操作一般会将所有数据根据 key 发送到所有的 reduce 分区中去,...
  • lsshlsw
  • lsshlsw
  • 2016-03-09 14:01:22
  • 6658

SparkSQL的3种Join实现

本文简单介绍SparkSQL中的几种Join实现。SparkSQL会根据用户配置,对不同大小的表应用不同的Join策略,兼顾效率和稳定性。...
  • doggie_wangtao
  • doggie_wangtao
  • 2016-12-12 23:06:16
  • 9241

Spark SQL之Join优化

SparkSQL总体流程介绍 在阐述Join实现之前,我们首先简单介绍SparkSQL的总体流程,一般地,我们有两种方式使用SparkSQL,一种是直接写sql语句,这个需要有元数据库支持,例如...
  • weixin_37136725
  • weixin_37136725
  • 2018-01-06 15:23:07
  • 349

spark-spark-SparkSQL的3种Join实现(转)

转载自:http://blog.csdn.net/asongoficeandfire/article/details/53574034 引言 Join是SQL语句中的常用操作,良好的表结构...
  • hjw199089
  • hjw199089
  • 2017-03-22 17:43:55
  • 1600

sparksql中的broadcast join和prestodb中的dynamic filter比较

今天在prestodb的qq群里看到有人提到说一个子查询在presto中非常慢:select * from his_data_opt where act_no in (select act_no fr...
  • sinat_27545249
  • sinat_27545249
  • 2017-09-12 23:09:10
  • 290
    个人资料
    持之以恒
    等级:
    访问量: 6673
    积分: 1109
    排名: 4万+
    文章存档