使用Eclipse+scala计算Pi

来源:互联网 发布:dna怎么入公安数据库 编辑:程序博客网 时间:2024/06/16 15:02

这里主要介绍用Eclipse IDEA计算Pi值的具体操作过程

    • 前提环境条件
    • 创建项目
      • 创建Maven项目
      • 修改pomxml
      • 解决java报错
      • 修改scala配置
    • 创建scala程序
      • 创建scala对象
      • 计算Pi的源程序
      • 运行scala对象

前提环境条件

  1. 安装Eclipse Scala IDEA
  2. 下载并配置JAVA 1.8

创建项目

创建Maven项目

用Eclipse创建Maven项目
这里写图片描述

选择默认地址
这里写图片描述

选择快速开始项
这里写图片描述

Group id: org.test
Artifact id: SparkCalPi
这里写图片描述

修改pom.xml

双击pom.xml, 点击dependencies,点击添加按钮,添加dependency。
Group ID: org.apache.spark
Artifact ID: spark-core_2.11
Version: 2.1.0
这里写图片描述

添加scala特性
这里写图片描述

解决java报错

错误为:
Description Resource Path Location Type
Archive for required library: ‘/Users/liuqi/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.6.5/jackson-databind-2.6.5.jar’ in project ‘SparkCalPi’ cannot be read or is not a valid ZIP file SparkCalPi Build path Build Path Problem

这里写图片描述

到对应文件夹下,删除黄色框部分:
这里写图片描述

发现都不成功,最后发现是版本不对应,修改pom.xml

<dependencies>    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-core_2.11</artifactId>        <version>1.2.0</version>    </dependency>  </dependencies>

更改后成功

修改scala配置

点击项目(右键)->属性,删除Scala Library container[2.11.8]
这里写图片描述

删除Scala-Library-Container
这里写图片描述

可选:改变scala编译器环境,点击属性->项目配置->修复scala安装(Fix scala installation 2.10.4)

将java包都改为scala
更改 src/main/java 到 src/main/scala
更改 src/test/java 到 src/test/scala
点击包(右键)->重命名,将java改为scala
这里写图片描述
这里写图片描述

创建scala程序

创建scala对象

创建新的包org.test.spark
点击包src/main/scala(右键)->新建->包 org.test.spark
这里写图片描述
这里写图片描述

创建新的scala对象 SparkPi
点击包org.test.spark(右键)->新建->scala对象,命名为 SparkPi
这里写图片描述
这里写图片描述

计算Pi的源程序

源代码

package org.test.spark import scala.math.randomimport org.apache.spark._object SparkPi {  def main(args: Array[String]) {    val conf = new SparkConf().setAppName("Spark Pi") .setMaster("local")    val spark = new SparkContext(conf)    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.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)    spark.stop()  }}

运行scala对象

运行scala对象
点击scala对象(右键)->运行->Java应用程序
这里写图片描述

查看最后结果,报错 ERROR ActorSystemImpl: Uncaught fatal error from thread [sparkDriver-akka.remote.default-remote-dispatcher-8] shutting down ActorSystem [sparkDriver]
这里写图片描述

由于集群较小,只有4台机器,在其中master上面提交了任务,结果出现上述异常。即driver 内存不足,因此使用Spark-sumbit脚本时,提供–executor-memory –driver-memory选项,来相应的设置内存。
(暂时还没有解决,暂缓)

理论结果如下:
这里写图片描述

0 0
原创粉丝点击