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() }
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/16125346.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?