spark需要maven管理吗_超详细的使用Intellij IDEA+Maven开发Spark项目的流程

本文详述如何在Windows环境下,利用Intellij IDEA开发Spark项目,涉及Scala版本匹配、Spark环境配置、免密钥登录、Maven管理依赖、打包及运行Spark程序,以及解决常见问题。
摘要由CSDN通过智能技术生成

上了数据挖掘的课,要写结课论文了。于是选择了Spark作为自己的课程主题,也是为自己之后的毕业论文打下知识基础,这里将自己的第一试验记录下来,以便之后的回顾。

1.环境配置

这是我的开发环境:

Windows 10

阿里云(Centos 7.3)

spark-2.2.0-bin-hadoop2.7(scala-compiler-2.11.8.jar)

Scala 2.12.4(这个需要跟spark-2.2.0-bin-hadoop2.7中Scala的编译版本一样才会执行成功,之后会看到报错,所以这个改为Scala 2.11.8)

2.配置Spark的运行环境(Linux)

重点:Spark的版本一定要注意和Scala的版本相对应,不然出现的错误会千奇百怪的,请谨慎安装,具体的对应安装版本无法详细,在这里只能给出自己尝试过的安装版本

安装的环境的前提是要安装JDK(建议是1.8),因为Spark程序是运行在JVM上的,安装Spark只需要将压缩包解压即可。(这是我见过的最简单的安装啦啦啦)下面的是安装后的Spark目录:

image.png

可以利用命令行写Spark项目,可以利用Python和Scala语言写(建议使用Scala),使用./spark-shell 进入编写的入口:

image.png

配置免密钥登录

第一步:使用下面的命令生成密钥

$ ssh-keygen -t rsa

如果之前的生成的密钥的话,在这里可以不用生成。

第二步:复制公钥文件

进入/root/.ssh/ 目录,如果没有authorized_keys 文件,可以先创建一个此文件。

$ cat id_rsa.pub >> authorized_keys

第三步:修改authorized_keys文件的权限

$ chmod 600 authorized_keys

第四步:验证ssh服务

$ ssh localhost

执行上述命令如果没有输入密码就可以登录就说明成功了!

3.Intellij IDEA上安装Scala插件和新建项目(Windows)

下面是网友项目的插件安装方法和新建简单的Scala项目,搬过来给大家看看,链接如下:

下面是我新建Scala项目的目录结构图:

image.png

重点:在build.sbt 文件中添加libraryDependencies 的版本问题,这也是依赖版本要对应的问题,后面会介绍利用Maven管理依赖,这样会方便多了。

4.编写第一个Spark程序

这是非常重要的一步:编写spark程序时需要提前将Scala的SDK添加到Global Libraries,如下图所示:

image.png

新建Scala的class类:

image.png

添加依赖(官方介绍):

可以像这样定义一个依赖,其中 groupId, artifactId 和 revision 都是字符串:

libraryDependencies += groupID % artifactID % revision

或者像这样, 用字符串或者 Configuration val 当做 configuration:

libraryDependencies += groupID % artifactID % revision % configuration

方法 % 从字符串创建 ModuleID 对象,然后将 ModuleID 添加到 libraryDependencies 中。

当然,要让 sbt(通过 Ivy)知道从哪里下载模块。如果你的模块和 sbt 来自相同的某个默认的仓库,这样就会工作。例如,Apache Derby 在标准的 Maven2 仓库中:

libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3"

image.png

不推荐使用这用手动添加依赖的方式,推荐使用Maven管理依赖的方法,请往下面看。

5.将Spark程序打包(Jar包)

打包设置选项:

image.png

打包参数设置:1.选择主函数;2.选择只打包Scala程序

image.png

在Build 中选择Build Artifacts 后选择build即可打包成功

image.png

选择build ,然后等待打包结束

image.png

打包的jar包的位置:

image.png

将jar包利用XFtp工具上传到Spark运行环境(对应程序运行地址):

image.png

6.将Jar包上传至Spark运行环境并启动和运行

启动Spark运行环境需要依次执行下面三个命令:

在执行了master进程和worker进程后,可以执行curl 127.0.0.1:8080 得到Spark Master at spark://MJ:7077 ,注意这个地址每个机器上都是不一样的,注意区分一下。

Spark Master at spark://MJ:7077

#启动master进程

./sbin/start-master.sh

#启动worker进程

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://MJ:7077

#提交作业 master后面的地址通过localhost:8080得到 class后面的是自己的项目的名称和对应jar包的地址

./bin/spark-submit --master spark://MJ:7077 --class WordCount /home/MJ/spark/hellospark.jar

7.查看Spark运行的结果

提交作业之后,可以查看作业运行的结果:

image.png

8.构建Maven管理Spark项目

首先是New Project 项目选择Maven,JDK选择最好是1.8+,然后点击next:

image.png

新建项目之后的目录结构是这样的:

image.png

把其中的java和test文件夹都重新命名为scala文件夹,如下图

image.png

右键项目名出现Add Frameworks support ,并选择scala:

image.png

image.png

选择之后,然后新建一个Package 包文件夹,最后就是新建scala文件

image.png

新建一个Main 文件,打印出hello spark! 字样

image.png

image.png

添加必要的关于Spark的pom 文件,点击添加Group: org.apache.spark

org.apache.spark

spark-core_2.11

2.2.1

org.apache.spark

spark-sql_2.11

2.2.1

org.apache.spark

spark-hive_2.11

2.2.1

9.可能出现的问题

出现这种情况是由于在IDEA和Linux中安装的Scala版本不一样,把两者选择成一样的就会编译通过。

image.png

进入/usr/local/spark-2.2.0-bin-hadoop2.7/jars 找到Scala编译的版本号:

image.png

在IDEA中的Project Structure中选择对应的Scala版本:

image.png

出现下面错误:

exception in thread main org.apache.spark.sparkexception:A master URL must be set in your..

从提示中可以看出找不到程序运行的master,此时需要配置环境变量。

传递给spark的master url可以有如下几种:

local 本地单线程

local[K] 本地多线程(指定K个内核)

local[*] 本地多线程(指定所有可用内核)

spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。

mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。

yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

点击edit configuration,在左侧点击该项目。在右侧在右侧VM options中输入“-Dspark.master=local”,指示本程序本地单线程运行,再次运行即可。从提示中可以看出找不到程序运行的master,此时需要配置环境变量。

点击edit configuration,在左侧点击该项目。在右侧

在右侧VM options中输入“-Dspark.master=local”

,指示本程序本地单线程运行,再次运行即可。

image.png

运行成功的结果:

image.png

10.参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值