开发者社区> 问答> 正文

Spark为什么要使用广播变量?

Spark为什么要使用广播变量?

展开
收起
芯在这 2021-12-10 22:44:22 391 0
1 条回答
写回答
取消 提交回答
  • 广播变量的好处,不是每个task一份变量副本,而是变成每个节点的executor才一份副本。这样的话, 就可以让变量产生的副本大大减少。

    广播变量,很简单

    其实就是SparkContext的broadcast()方法,传入你要广播的变量,即可

    final Broadcast<Map<String, Map<String, IntList>>> dateHourExtractMapBroadcast = sc.broadcast(fastutilDateHourExtractMap);

    使用广播变量的时候

    直接调用广播变量(Broadcast类型)的value() / getValue() 可以获取到之前封装的广播变量

    广播变量,初始的时候,就在Drvier上有一份副本。 task在运行的时候,想要使用广播变量中的数据,此时首先会在自己本地的Executor对应的BlockManager中, 尝试获取变量副本;如果本地没有,那么就从Driver远程拉取变量副本,并保存在本地的BlockManager中; 此后这个executor上的task,都会直接使用本地的BlockManager中的副本。 executor的BlockManager除了从driver上拉取,也可能从其他节点的BlockManager上拉取变量副本。 HttpBroadcast

    TorrentBroadcast(默认)

    2021-12-10 22:59:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载