Apache spark 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
数组[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秒