Ahs*_*jaz 5 scala distributed-computing apache-spark
Spark 相对较新,并尝试在独立的 12 核三机器集群上运行 SparkPi 示例。我无法理解的是,与使用 12 个切片相比,使用单个切片运行此示例可以提供更好的性能。当我使用并行函数时也是如此。随着添加每个切片,时间几乎呈线性缩放。如果我做错了什么,请告诉我。代码片段如下:
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()
Run Code Online (Sandbox Code Playgroud)
更新:问题在于随机函数,因为它是同步方法,所以无法扩展到多个核心。