Spark Core 性能调优之使用广播变量

操作场景

Broadcast(广播)可以把数据集合分发到每一个节点上,Spark任务在执行过程中要使用这个数据集合时,就会在本地查找Broadcast过来的数据集合。如果不使用Broadcast,每次任务需要数据集合时,都会把数据序列化到任务里面,不但耗时,还使任务变得很大。

        1、每个任务分片在执行中都需要同一份数据集合时,就可以把公共数据集Broadcast到每个节点,让每个节点在本地都保存一份。

        2、大表和小表做join操作时可以把小表Broadcast到各个节点,从而就可以把join操作转变成普通的操作,减少了shuffle操作。

操作步骤

在开发应用程序时,添加如下代码,将“testArr”数据广播到各个节点。

def main(args: Array[String]) {

    ...

    val testArr: Array[Long] = new Array[Long](200)

    val testBroadcast: Broadcast[Array[Long]] = sc.broadcast(testArr)

    val resultRdd: RDD[Long] = inpputRdd.map(input => handleData(testBroadcast, input))

    ...

}

def handleData(broadcast: Broadcast[Array[Long]], input: String) {

    val value = broadcast.value

    ...

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容