windows10下spark2.4.5本地开发环境部署与测试

最近全国各地学生都开始上网课了,我也不例外。
今天开始学习spark,因为不在学校,在自己笔记本上重新装分布式集群时间成本太高了,所以spark在集群上跑是不行的了。所以今天老师简单介绍完spark,就让我们完成spark本地开发环境部署的任务了。
老师甩给我们几个安装包和一个简易的安装手册。
在这里插入图片描述

简单看了看,发现Java version 是1.7的,而我本机是1.8的。idea是2017.3.2的,而我本机是ultimate 2019.3.2版本的。老师保证用他的安装包是可以完成的,用新版本可能会出现兼容问题。
年轻人不就是要追求新鲜吗?我的idea和pycharm就是寒假把旧版本删了换最新版本的。所以,我就决定都尽量用新的。

需要准备的文件

  1. 到Scala官网下载最新版本scala-2.13.1.msi(msi安装文件安装后会自动的在path变量中添加bin目录,但仍然需要设置SCALA_HOME变量;)
  2. 到spark官网下载最新的稳定版spark-2.4.5-bin-hadoop2.6.tgz(这里要选择相应的Hadoop版本)
  3. Java jdkidea。因为早已经有了,所以这步跳过。没有的话,需要先下载安装好。

上面就是我准备的安装文件了,Scala和spark安装包都可以直接安装,过程很简单,一路next,最后finish。我把他们都安装在了F盘根目录下。
接着配置环境变量,首先是JAVA_HOME,因为早已配置好,所以不必重复配置。然后是在环境变量里新建SCALA_HOME=F:\scala,同样地,SPARK_HOME=F:\spark-2.4.5-bin-hadoop2.6\spark-2.4.5-bin-hadoop2.6。(很奇怪,我漏掉了sparkhome的配置,但最后也成功了)。PATH后加上“;%JAVA_HOME%\bin;%SPARK_HOME%\bin;%SCALA_HOME%\bin”
然后,在idea里欢迎界面找到“Configure”—>“Plugins”—>“Browse repositories”命令
在这里插入图片描述
在弹出的界面中输入“Scala”搜索插件,然后点击相应的安装按钮进行安装,重启Intellij使配置生效。(在主页面右上角点放大镜,搜索plugins也可以进入)
接着就是创建Scala项目并运行测试代码了。由于教程对这块跳过了,我在这里踩了不少坑。
按照直觉,我是这么干的:new project->Scala->傻眼
在这里插入图片描述
选哪个?
于是,开始百度如何创建Scala项目,有些集成了maven,其实我看到创Scala项目的方法有3种吧。因为老是出现不明的bug,每种方法都尝试了几遍。现在我使用的创建方法是new project->Scala->idea,next,jdk和Scala SDK都选择相应的版本,finish。
创建后,按照老师给的文件步骤是这样的:在这里插入图片描述
然而我在spark目录下找了半天也没有lib,后来发现我使用的2.4.5确实是没有lib(但有jars),但老师给的版本有。所以我考虑要不要把旧版本里的spark-assembly-1.6.0-hadoop2.6.0.jar手动导入,我还是决定导入同时也导入了下载的新版本的spark里的jars。
下一步,以同样的方式将Scala库的jar包导入。(导入Scala的包时点击加号后选择Scala SDK,导入spark时选择Java)在这里插入图片描述
到这里就是测试了。我在项目的src右键一个scala class,然后还要选择是class还是object因为啥都不懂,所以这里也不懂class和object有什么区别,选了object。在这里插入图片描述
然后把代码拷贝进来,运行,结果当然是各种报错。
第一个错:在这里插入图片描述
百度了很久,也没找到相同的。如何解决的?
我把前面提到的spark-assembly-1.6.0-hadoop2.6.0删了
再次运行,很开心,不再是什么matching.Regex的错误了。
这次是什么错呢?
java.lang.NoSuchMethodError: scala.Predef$.refArrayOps
百度一下,嗯…
我发现了spark和Scala版本的兼容问题,spark2.4.5不能使用Scala2.13,于是我卸载2.13下了2.12。
最后,大功告成。
测试代码如下:

import org.apache.spark.{SparkConf, SparkContext}

object SparkPi {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Spark pi").setMaster("local")
    val sc = new SparkContext(conf)
    val slices = if (args.length > 0) args(0).toInt else 2
    val n = 100000 * slices
    val count = sc.parallelize(1 to n, slices).map { i =>
      val x = i * 2 - 1
      val y = i * 2 - 1
      if (x * x + y * y < 1) 1 else 0
    }.reduce(_ + _)
    println("pi is roughly " + 4.0 * count / n)
    sc.stop()
  }
}

运行,控制台一串红红的字母弹出来,往下一翻,一行黑色字体鹤立鸡群,在这里插入图片描述
我一惊,π约等于这个吗?
不管了,逻辑问题我不考虑,反正我完成了任务。

有个小插曲,看老师视频说src下是new scala script的,可是我怎么也找不到这个,只有Scala class和Scala worksheet。最后我new的是Scala class
,不知道有什么关系。在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值