Apache spark Spark中的长广播时间

Apache spark Spark中的长广播时间,apache-spark,broadcast,Apache Spark,Broadcast,我有下面的Spark代码来广播一个大的数组[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) / 100

我有下面的Spark代码来广播一个大的
数组[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()
用于立即广播
数据。密码花了大约35秒。但是,当我查看Spark UI时,我发现
rdd.mapPartitions(…).count()
中的
计数只花了11秒,这意味着
sc.broadcast(data)
大约花了24秒。如果我理解正确的话,Spark以一种懒惰的方式广播
数据
,因此
sc.broadcast(data)
应该是一种便宜的操作,不应该花费那么多时间(24秒)。我错过什么了吗

更新:在调优gc之后,上述代码的总时间开销减少到大约24秒<代码>sc.广播
仍需约10秒