From f91e55eb6a9c81189292989a40d9a4e76dc9309c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B5=A9?= Date: Sun, 26 Jun 2016 12:12:56 +0800 Subject: [PATCH 1/3] make rdd count be n --- examples/src/main/scala/org/apache/spark/examples/SparkPi.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala index 42f6cef4e189..d626f3f968f9 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala @@ -31,7 +31,7 @@ object SparkPi { .getOrCreate() val slices = if (args.length > 0) args(0).toInt else 2 val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow - val count = spark.sparkContext.parallelize(1 until n, slices).map { i => + val count = spark.sparkContext.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 From 87ecf4df128f710215d42840450792659d060190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B5=A9?= Date: Sun, 26 Jun 2016 16:25:18 +0800 Subject: [PATCH 2/3] avoid overflow As explained in https://github.com/apache/spark/pull/2874 ``` The max size of the input seq was Int.MaxValue - 1 ``` --- examples/src/main/scala/org/apache/spark/examples/SparkPi.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala index d626f3f968f9..75dcccaa9f97 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala @@ -30,7 +30,7 @@ object SparkPi { .appName("Spark Pi") .getOrCreate() val slices = if (args.length > 0) args(0).toInt else 2 - val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow + val n = math.min(100000L * slices, Int.MaxValue - 1).toInt // avoid overflow val count = spark.sparkContext.parallelize(1 to n, slices).map { i => val x = random * 2 - 1 val y = random * 2 - 1 From 1cfbea2367eefa98586a836a6cd4ca39e9ac2136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B5=A9?= Date: Sun, 26 Jun 2016 17:20:06 +0800 Subject: [PATCH 3/3] Update SparkPi.scala change the denominator --- .../src/main/scala/org/apache/spark/examples/SparkPi.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala index 75dcccaa9f97..272c1a4fc2f4 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala @@ -30,13 +30,13 @@ object SparkPi { .appName("Spark Pi") .getOrCreate() val slices = if (args.length > 0) args(0).toInt else 2 - val n = math.min(100000L * slices, Int.MaxValue - 1).toInt // avoid overflow - val count = spark.sparkContext.parallelize(1 to n, slices).map { i => + val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow + val count = spark.sparkContext.parallelize(1 until 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) + println("Pi is roughly " + 4.0 * count / (n - 1)) spark.stop() } }