在火花上相對較新,並嘗試在獨立的12核心三機羣上運行SparkPi示例。我無法理解的是,與使用12個切片相比,使用單個切片運行此示例可以獲得更好的性能。當我使用並行功能時也是如此。時間幾乎是線性增加每個切片。請讓我知道如果我做錯了什麼。代碼片段如下:SparkPi運行緩慢,超過1片
val spark = new SparkContext("spark://telecom:7077", "SparkPi",
System.getenv("SPARK_HOME"), List("target/scala-2.10/sparkpii_2.10-1.0.jar"))
val slices = 1
val n = 10000000 * slices
val count = spark.parallelize(1 to n, slices).map {
i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x * x + y * y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count/n)
spark.stop()
更新:問題是隨機函數,因爲它是一個同步方法,它無法擴展到多個核心。
你能否將你的更新添加爲答案? –