加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Apache spark中,使用mapPartitions和组合使用广播变量

发布时间:2020-12-15 04:31:35 所属栏目:Java 来源:网络整理
导读:在Spark中,我们使用广播变量使每台机器只读变量的副本.我们通常在闭包之外创建一个广播变量(例如闭包所需的查找表)以提高性能. 我们还有一个名为mapPartitions的spark转换运算符,它试图实现相同的功能(使用共享变量来提高性能).例如,在mapPartitions中,我们
在Spark中,我们使用广播变量使每台机器只读变量的副本.我们通常在闭包之外创建一个广播变量(例如闭包所需的查找表)以提高性能.

我们还有一个名为mapPartitions的spark转换运算符,它试图实现相同的功能(使用共享变量来提高性能).例如,在mapPartitions中,我们可以为每个分区共享数据库连接.

那么这两者之间的区别是什么?我们可以互换地使用它来共享变量吗?

解决方法

broadcast用于将对象发送到每个工作节点.该对象将在该节点上的所有分区之间共享(并且对于集群中的每个节点,值/即对象都是相同的).广播的目标是在工作节点上的许多不同任务/分区中使用相同数据时节省网络成本.

相比之下,mapPartitions是RDD上可用的方法,并且仅在分区上像map一样工作.是的,您可以定义新对象,例如jdbc连接,然后对每个分区都是唯一的.但是,您不能在不同的分区之间共享它,更不用说在不同的节点之间共享它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读