一、Pi估值算法

通过在圆上“投掷飞镖”来估计π。我们在单位平方((0,0)到(1,1))中随机选取点,看看有多少点落在单位圆内。分数应该是π/4,所以我们用这个来得到我们的估计值。

二、项目maven依赖

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mk</groupId><artifactId>spark-test</artifactId><version>1.0</version><name>spark-test</name><url>http://spark.mk.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><scala.version>2.11.1</scala.version><spark.version>2.4.4</spark.version><hadoop.version>2.6.0</hadoop.version></properties><dependencies><!-- scala依赖--><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency><!-- spark依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><build><pluginManagement><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-jar-plugin</artifactId><version>3.0.2</version></plugin></plugins></pluginManagement></build>
</project>

三、编程代码

public class PiApp implements SparkConfInfo {public static void main(String[] args) {SparkSession sparkSession = new PiApp().getSparkConf("Pi");int slices = 2;int n = (int) Math.min(100_000L * slices, Integer.MAX_VALUE);JavaSparkContext sparkContext = new JavaSparkContext(sparkSession.sparkContext());List<Integer> list = new ArrayList<>(n);for (int i = 0; i < n; i++)list.add(i + 1);int count = sparkContext.parallelize(list, slices).map(v -> {double x = Math.random() * 2 - 1;double y = Math.random() * 2 - 1;if (x * x + y * y < 1)return 1;return 0;}).reduce((Integer a, Integer b) -> a + b);System.out.println("PI:" + 4.0 * count / n);sparkSession.stop();}
}public interface SparkConfInfo {default SparkSession getSparkConf(String appName){SparkConf sparkConf = new SparkConf();if(System.getProperty("os.name").toLowerCase().contains("win")) {sparkConf.setMaster("local[4]");System.out.println("使用本地模拟是spark");}else{sparkConf.setMaster("spark://hadoop01:7077,hadoop02:7077,hadoop03:7077");sparkConf.set("spark.driver.host","192.168.150.1");//本地ip,必须与spark集群能够相互访问,如:同一个局域网sparkConf.setJars(new String[] {".\\out\\artifacts\\spark_test\\spark-test.jar"});//项目构建生成的路径}SparkSession session = SparkSession.builder().appName(appName).config(sparkConf).config(sparkConf).getOrCreate();return session;}
}

输出

PI:3.14296

Spark入门(九)之PI估值相关推荐

  1. Spark入门系列(二)| 1小时学会RDD编程

    作者 | 梁云1991 转载自Python与算法之美(ID:Python_Ai_Road) 导读:本文为 Spark入门系列的第二篇文章,主要介绍 RDD 编程,实操性较强,感兴趣的同学可以动手实现一 ...

  2. Spark入门(一)单主standalone安装

    一.集群安装条件前置 实验spark安装在[Hadoop入门(二)集群安装]机器上, 已完成安装jdk,hadoop和ssh.网络等配置环境等. spark所依赖的虚拟机和操作系统配置 环境:ubun ...

  3. 一起学习Spark入门

    操作系统:CentOS-7.8 Spark版本:2.4.4 本篇文章是一个Spark入门文章,在文章中首先会对Spark进行简单概述,帮助大家先认识Spark,然后会介绍Spark安装部署上的基础知识 ...

  4. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 l  主机操作系统:Windows 64位, ...

  5. Spark入门实战系列--5.Hive(下)--Hive实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Hive操作演示 1.1 内部表 1.1.1 创建表并加载数据 第一步   启动HDFS ...

  6. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.编译Spark Spark可以通过SBT和Maven两种方式进行编译,再通过make-d ...

  7. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l&qu ...

  8. Spark入门(Python)

    Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到"大数据(Big Data)"广告的原因.它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰 ...

  9. Spark入门实战系列--4.Spark运行架构

    注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Applic ...

最新文章

  1. 图论 ---- F. The Shortest Statement (最短路的性质 + 任意两点间最短路 + 图转树)
  2. java 80端口_Java80端口占用异常解决方法
  3. java web插件_javaweb项目插件实现机制
  4. 今日直播 | Apache Hudi x Apache Pulsar Meetup线上专场如期而至 大咖齐聚
  5. VC++实现混合静态分裂视窗的方法
  6. python2.7出现的错误
  7. soltrace教程(3)基本使用
  8. spring Bean的初始化和销毁 (使用注解)
  9. 《Ray Tracing from the Ground Up》中的坐标系是怎么确定的
  10. 欧拉工程第74题:Digit factorial chains
  11. IntelliJ IDEA 2017 汉化包及教程
  12. ArcGIS10.2 安装教程
  13. 区块链钱包,新一代支付宝?|筱静观察
  14. UE4 创建地形失败:Unreal Engine 4 Crash Reporter
  15. 新浪短网址生成java_T.CN短网址 新浪T.CN短网址批量生成工具推荐
  16. 大学的终结,终结了什么???
  17. v2ray服务端启动出现panic: runtime error: invalid memory address or nil pointer dereference
  18. 微信支付android白屏,android 解决微信登陆白屏样式问题
  19. Android:AppBarLayout设置elevation为0,结果消失
  20. 个人站长利用免费cloudflare对抗DDoS实战

热门文章

  1. map容器中删除一个元素(value)
  2. 解决浏览器存储问题,不得不了解的cookie,localStorage和sessionStorage
  3. c语言迪思卡尔算法,【论文】数字化的意匠_数字化设计与造型的认知学反思_谭峥.pdf...
  4. [MyBatisPlus]测试BaseMapper的功能测试自定义功能
  5. [SpringBoot2]原生组件注入_原生注解与Spring方式注入
  6. [JS-BOM]BOM_Window窗口对象
  7. C++vector容器-构造函数
  8. linux jdk1.7 tomcat mysql_Linux环境搭建 jdk+tomcat+mysql
  9. revit如何根据坐标进行画线_铭成教你如何根据同步带的齿形进行选型
  10. cf1453B. Suffix Operations