spark广播时间长

jv4diomz  于 2021-05-29  发布在  Spark
关注(0)|答案(0)|浏览(303)

我有下面的Spark代码来广播一个大的 Array[Array[Int]] data .

val timeBeg = System.currentTimeMillis

val dataBc = sc.broadcast(data)

rdd.mapPartitions(_ => Iterator(dataBc.value.length)).count()

val timeEnd = System.currentTimeMillis

println((timeEnd - timeBeg) / 1000.0)

在这里, rdd.mapPatitions(...).count() 用于立即广播 data . 密码花了35秒。然而,当我查看spark ui时,我发现 countrdd.mapPartitions(...).count() 只花了11秒,也就是说 sc.broadcast(data) 花了大约24秒。如果我理解正确的话,spark广播 data 以懒惰的方式,因此 sc.broadcast(data) 应该是一个廉价的操作,不应该花那么多时间(24秒)。我错过什么了吗?
更新:在调优gc之后,上面代码的总时间开销减少到大约24秒。 sc.broadcast 还需要10秒。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题