2. SparkPi实例

原理

代码

package operator
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import java.lang.Math.random
object SparkPI extends App {
// 分区数量
val num_partitions : Int =
if(args.length > 0)
args(0).toInt
else
2
// 点的个数
private val num_points: Int = num_partitions * 100000
private val sparkConf = new SparkConf().setMaster("local").setAppName("pi")
private val sparkContext = new SparkContext(sparkConf);
// 把本地的scala数据集合转换为RDD
private val rdd: RDD[Int] = sparkContext.parallelize(1 to num_partitions, num_partitions)
// pi的求取逻辑
// 随机产生[-1, 1],如下代码统计了所有在圆内的数据
private val result: Int = rdd.map(element => {
val x = random * 2 - 1
val y = random * 2 - 1
if (x * x + y * y < 1) 1 else 0
}).reduce(_ + _)
// 最终的结果
private val pi: Double = 4.0 * result / num_points
println(s"PI is roughly $pi")
sparkContext.stop()
}
posted @   jsqup  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示