当前位置: 首页 > web >正文

大数据Spark(五十八):Spark Pi介绍

文章目录

Spark Pi介绍


Spark Pi介绍

Spark Pi是Apache Spark官方提供的一个示例程序,该案例使用 Spark 进行分布式计算,通过蒙特卡罗方法估算圆周率(π)的值,其估算π原理如下:

上图中,正方形边长为2,圆的半径为1,那么正方形面积为4,圆的面积为π。现在向正方形内随机“打点”,即随机生成(x,y)坐标,范围不超过正方向范围,最终记录在圆内打点的个数与正方形内打点的个数,两者比例为4/π,当“打点”个数非常大时,可以大约算出π的大小。

Spark Pi源码如下(Spark源码examples模块中org.apache.spark.examples.SparkPi):

object SparkPi {def main(args: Array[String]): Unit = {val spark = SparkSession.builder.appName("Spark Pi").getOrCreate()val slices = if (args.length > 0) args(0).toInt else 2//如果slices为100,那么n为一千万val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow//随机生成n-1个点,然后计算落在圆内的点的个数val count = spark.sparkContext.parallelize(1 until n, slices).map { i =>//random返回的是0到1之间的随机数,x,y的取值范围是-1到1val x = random * 2 - 1val y = random * 2 - 1if (x*x + y*y <= 1) 1 else 0}.reduce(_ + _)//计算pi-圆的面积/正方形的面积=count/n,即:pi = 4*count/(n-1)println(s"Pi is roughly ${4.0 * count / (n - 1)}")spark.stop()}
}

以上代码注意如下几点:

  • SparkSession为SparkSQL中的对象,可以通过SparkSession对象获取SparkContext对象。
  • slices参数是用户在运行SparkPi 任务传入的参数,该参数用于在并行化集合为RDD过程中指定RDD的分区个数,即并行度个数。

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
http://www.xdnf.cn/news/3616.html

相关文章:

  • 《windows GCC 版本升级到9以上》
  • STM32部分:2、环境搭建
  • 前端面经-VUE3篇--vue3基础知识(二)计算属性(computed)、监听属性(Watch)
  • 会话历史管理——持久化
  • C# 方法(局部变量和局部常量)
  • Java 自旋锁:实现机制与优化策略
  • 软件性能测试报告:办公软件性能如何满足日常工作需求?
  • 第三章 权限维持-linux权限维持-隐藏
  • Wireshark网络抓包工具基础使用教程
  • 在 Python 中,以双下划线开头和结尾的函数(如 `__str__`、`__sub__` 等)
  • C++ unordered_set unordered_map
  • k8s3部署
  • 数字智慧方案5970丨智慧农业大数据服务建设方案(69页PPT)(文末有下载方式)
  • 使用huggingface_hub需要注意的事项
  • VBA快速合并多列单元格
  • 英伟达黄仁勋推荐的深度学习教程
  • Langchain,为何要名为langchian?
  • C语言 指针(3)
  • QT6(31)4.5常用按钮组件:Button,以及例题实现,如何为程序引入图片资源文件,本篇只包括例题程序的界面搭建
  • 树与二叉树完全解析:从基础到应用
  • 使用 Helm 在 EKS 上管理多个 Traefik Ingress 控制器和 ALB 的流量
  • 前端应用开发技术历程的简要概览
  • 第 5 篇:红黑树:工程实践中的平衡大师
  • 如何提升自我情绪管理的能力?
  • cpper 转 java
  • 现代健康养生全攻略
  • 4.2 math模块
  • 镜像和容器的深度介绍和关系
  • kaggle人工智能竞赛:通过声纹识别生物种类
  • DiT:文档图像Transformer 的自监督预训练