Spark开发环境搭建(IDEA、Maven)

在搭建开发环境之前,请先安装好scala开发环境和spark:
scala:https://blog.csdn.net/qq_39429714/article/details/84332869
spark:https://blog.csdn.net/qq_39429714/article/details/84332698

此时,我们的IDEA已经能做普通的scala开发;

如果要开发spark程序,只要引入spark相关的依赖即可
(即导入spark相关的jars);

导入spark相关的依赖有两个办法:
1、引入相关的jars(操作简单)
2、使用maven/sbt管理jars(操作复杂)

Maven简介

Maven是一个跨平台的项目管理工具(Apache开源项目)。它主要服务于基于Java平台的项目构建、依赖管理和项目信息管理;

很多Java应用都会借用第三方的开源类库,这些类库都可通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来;

Maven提供了一个优秀的解决方案,通过一组坐标Maven能够找到任何一个Java类库。Maven给Java类库世界引入了经纬,让它们变得有秩序,借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题;

Maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。通过一些工具还能对其进行快速地搜索。只要定位了坐标,Maven就能够自动下载,省去了手工劳动;

Maven的安装

1、下载、解压缩
2、设置环境变量,使环境变量生效
3、mvn –v
备注:仅在安装IDEA的节点上安装
Maven会根据项目的pom.xml文件下载很多的jar,下载后的jar放在:
~/.m2/repository 中 .m2可以先手动在家目录下创建,IDEA会自动识别或创建
缺省要去国外下载,速度非常慢。
我们采用如下方式:
1、将$MAVEN_HOME\conf\settings.xml文件复制一份到~/.m2目录下
2、修改默认下载地址,打开 ~/.m2/settings.xml,大约在文件的150行,做如下修改:

<mirrors>
  <mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
    <mirrorOf>central</mirrorOf>  
  </mirror>  
</mirrors>

备注:
1、IDEA引入jar包的时间比较长,下载的jar非常的多,取决于网络和Maven中央仓库的速度;
2、下载的文件存放在~/.m2/repository 中,大约有近300M
3、可以事先拷贝 repository 目录的内容,减少下载的时间

使用Maven管理依赖

步骤:

scala插件的安装(已完成)

全局JDK和Library的设置

全局JDK和Library的设置:为了避免每次都去配置JDK,这里进行一次全局配置。在欢迎界面点击Configure,然后在Project Defaults的下拉菜单中选择Project Structure(也可在开发界面点击 File->other settings -> Project Structure),如下图所示:
在这里插入图片描述

在打开的Default Project Structure界面的左侧边栏选择Project,在右侧打开的页面中创建一个新的JDK选项(本机已经安装过JDK),如下图所示步骤在下拉菜单中点击JDK后,在打开的对话框中选择你所安装JDK的位置,注意是JDK安装的根目录,就是JAVA_HOME中设置的目录。
在这里插入图片描述

配置全局的Scala SDK

在打开的页面左侧选择Global Libraries,然后在中间一栏中有一个绿色的加号标志 +,点击后在下拉菜单中选择 Scala SDK;
在打开的对话框中选择所安装的Scala,点击OK确定,这时候会在中间一栏位置处出现Scala的SDK,在其上右键点击后选择Copy to Project Libraries…,这个操作是为了将Scala SDK添加到项目的默认Library中去。

新建maven项目

欢迎界面点击Create New Project,在打开的页面左侧边栏中,选择Maven,然后在右侧的Project SDK一项中,查看是否有正确的JDK配置项。正常来说这一栏会自动填充的,因为在前面已经配置过全局的Project JDK了。如果这里没有正常显示JDK的话,可以点击右侧的New…按钮,然后指定JDK安装路径的根目录即可,然后点击Next,来到Maven项目最重要三个参数的设置页面,这三个参数分别为:GroupId, ArtifactId和Version。步骤如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建 Hello world

在上一步中,已经创建了好一个Maven工程。
1、删除无用的文件。主要是 main\java、test;

2、将Scala的框架添加到这个项目中。在左侧栏中的项目名称上右键菜单中点击Add Framework Support…,然后在打开的对话框左侧边栏中,勾选Scala前面的复选框,然后点击确定即可(前提是上文中所述步骤都已正确走通,否则会看不到Scala这个选项);

3、在main文件夹中建立一个名为 scala 的文件夹,并右键点击 scala 文件夹,选择 Make Directory as,然后选择Sources Root。意思是将 scala 文件夹标记为一个源文件的根目录,在其内的所有代码中的 package ,其路径就从这个根目录下开始算起。

4、在已经标记好为源文件根目录的 scala 文件夹 上,右键选择 New,然后选择 Scala Class,随后设置好程序的名称,并且记得将其设置为一个 Object。正常的话,将会打开这个 Object 代码界面,并且可以看到IntelliJ IDEA自动添加了一些最基本的信息;

5、完成Hello World程序的编写,并运行。

导入spark依赖

此时已经可以成功的运行一个Scala 项目了。想要运行在 spark 上运行还需要导入相关依赖。打开pom.xml文件添加如下依赖(可以先添加部分内容):
https://blog.csdn.net/qq_39429714/article/details/84332157
导入依赖以后记得点击“Import Changes Enable Auto-Import”,引入jar包(每次更改配置后 ,会自动检查 repository 目录的内容,并联网更改)

编写wordcount代码在IDEA中运行

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

object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("wordcount").setMaster("local")
    val sc = new SparkContext(conf)

    val lines = sc.textFile("hdfs://node1:8020/user/spark/data/a.scala")
    lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println _)
    sc.stop()
  }
}

// setMaster和file路径根据实际情况进行修改

打包在spark集群上运行

setMaster(“local[2]”)要去掉,master靠参数给定
运行成功后,可以将代码打包成 jar 发送到 spark 集群上运行。步骤如下:点击"File",然后选择"project Structure"
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一个表示将依赖包一同打包 :jar包独立 文件较大(Mb)
第二个表示只将依赖包的依赖路径打入:jar包不独立,文件较小(Kb)

在这里插入图片描述
删除其他不需要的依赖包,如下图所示,删除其他不需要的包,只留下红色矩形中的两个。
注意:output directory 的路径,此处是导出 jar 的路径。
将最后面的文件名删除,则第一行的name即为你指定的jar包文件名,否则只是指定了目录名,文件名默认为项目名
执行 bulid 构建jar
在这里插入图片描述
jar 包导出以后就可以在spark上运行了
spark-submit --master local --class WordCount MyProject.jar

猜你喜欢

转载自blog.csdn.net/qq_39429714/article/details/84332349
今日推荐