spark broadcast join优化

作者: breeze_lsw | 来源:发表于2016-03-30 21:35 被阅读2361次

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

举例

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

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

shuffle join

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

broadcast join

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

小表没有进行broadcast

shuffle join

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

broadcast join

实现代码(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")

......

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

spark.sql.autoBroadcastJoinThreshold

相关文章

  • spark broadcast join优化

    在大量数据中对一些字段进行关联。 举例 ipTable:需要进行关联的几千条ip数据(70k)hist:历史数据(...

  • 解决Spark数据倾斜(二) 使用Map侧Join代替Reduc

    原理 通过Spark的Broadcast机制,将Reduce侧Join转化为Map侧Join,避免Shuffle从...

  • Spark Join 的三种方式

    Spark join的三种方式: 1.broadcast hash join:将其中一张较小的表通过广播的方式,由...

  • Spark难点 | Join的实现原理

    Join背景 当前SparkSQL支持三种join算法:Shuffle Hash Join、Broadcast H...

  • spark range join 优化

    背景 一张ip表,一张ip地理信息表,地理信息表每条数据包含了ip地址的起点和终点以及一些地理信息, 需要用 i...

  • Spark之BroadCast

    Spark之BroadCast篇 BroadCast的作用: BroadCast就是将数据从一个节点发送到其它的节...

  • Spark-broadcast

    参见Spark相关--共享变量-广播变量-broadcast

  • Spark Join优化-BucketJoin实现

    偶然读取到了字节跳动关于Spark做的一些优化,发现其中一项被称为BuckedtJoin的优化项 传送门:Spar...

  • spark broadcast

    为什么需要broadcast类型变量 ,它有哪些优点? spark中怎样创建和使用broadcast类型变量 ? ...

  • Spark Broadcast

    当一个 Driver 启动后,会在很多节点上运行 Task,有一些Task 是相同的,即具有相同的 functio...

网友评论

    本文标题:spark broadcast join优化

    本文链接:https://www.haomeiwen.com/subject/xylelttx.html