首页 理论教育 在IntelliJ IDEA中开发和部署Spark应用程序

在IntelliJ IDEA中开发和部署Spark应用程序

时间:2023-06-20 理论教育 版权反馈
【摘要】:首先我们需要在IntelliJ IDEA中建立一个应用名为FirstSparkApp的工程,创建过程可以通过选择“File”菜单栏→“New Project”选项,然后弹出一个New Project界面,如图3-13所示。这样设置的原因是因为这是Spark项目的标准格式。运行结果如图3-18所示,可以看到在IntelliJ IDEA控制台已经显示出“Pi is roughly 3.14252”的结果。

在IntelliJ IDEA中开发和部署Spark应用程序

在这里,我们借用Spark源码的examples包中提供的应用程序示例SparkPi,这个示例就是根据传入Object SparkPi的参数值进行计算,然后打印出Pi的大约值。首先我们需要在IntelliJ IDEA中建立一个应用名为FirstSparkApp的工程,创建过程可以通过选择“File”菜单栏→“New Project”选项,然后弹出一个New Project界面,如图3-13所示。

978-7-111-52860-9-Chapter03-101.jpg

图3-13 创建Scala工程

接下来我们选择“Scala”选项,然后点击“Non-SBT”,最后点击“Next”按钮,来完成工程的创建(如图3-14所示),需要注意的是这里我们以Non-SBT的方式创建工程,Maven和SBT的方式我们会在后面的小节讲解。

978-7-111-52860-9-Chapter03-102.jpg

图3-14 创建Scala工程

在图3-14中我们需要设置一下Project name的值,这里我们设置工程名字是FirstSparkApp,然后点击“Finish”按钮,就可以完成工程的创建。

FirstSparkApp工程创建成功后,选择“File”菜单栏→“project structure”选项→“Modules”选项,在Sources选项的src文件夹下再创建两个文件夹,文件夹名为main和scala,并且右击这两个文件夹选择source属性来对其进行设置,点击“OK”按钮完成(如图3-15所示)。这样设置的原因是因为这是Spark项目的标准格式。

然后我们就可以在FirstSparkApp的src/main/scala文件夹下创建一个名称为SparkPi的Scala Object,最后我们把Spark源码的examples包中的SparkPi实例复制过来,修改代码中SparkConf实例化时Master和AppName的值,这里我们先设置Master是local(本地模式),AppName(应用名称)是FirstSparkApp,如图3-16所示。

下面我们通过Local模式和Spark集群的模式对创建的FirstSparkApp工程进行测试。

1.以Local模式测试搭建好的应用环境

在IntelliJ IDEA中测试Local模式很简单,由于我们已经在图3-16所示的程序中实例化SparkConf时设置了它的运行模式是Local模式,因此我们直接运行就可以了。

978-7-111-52860-9-Chapter03-103.jpg

图3-15 创建main和scala文件夹

978-7-111-52860-9-Chapter03-104.jpg

图3-16 FirstSparkApp工程中的Object SparkPi程序

(1)在程序页面右击,选择Run‘FirstSparkApp’,就会在IntelliJ IDEA的控制台运行(如图3-17所示)。

(2)运行结果如图3-18所示,可以看到在IntelliJ IDEA控制台已经显示出“Pi is roughly 3.14252”的结果。

978-7-111-52860-9-Chapter03-105.jpg

图3-17 选择Run‘FirstSparkApp

978-7-111-52860-9-Chapter03-106.jpg

图3-18 Local模式运行SparkPi的结果

2.在Spark集群上运行在IntelliJ IDEA上开发的应用程序

(1)由于我们要在Spark集群的模式下运行FirstSparkApp工程,首先要对代码做下修改,设置SparkConf对象的setMaster()方法的参数为spark://SparkMaster:7077,注意这里设置的Master是笔者自己主机的主机名和Master的端口号,如图3-19所示。

要想通过shell命令终端在Spark集群上运行该工程,必须把程序打成Jar包,以下的一系列步骤可以完成打包操作。

(2)选择“File”菜单栏→“Project Structure”按钮,然后选择“Artifact”选项,单击“+”按钮,选择“Jar”选项→“From Moddules with dependencies”选项(如图3-20所示)。

(3)选择Main Class选项的下拉菜单,在弹出的对话框中选择SparkPi,并单击“OK”按钮(如图3-21所示)。(www.xing528.com)

(4)在上一步单击“OK”按钮后,在Artfact界面我们通过name选项重新设置一下Jar包的名字为FirstSparkAppJar,同时由于集群中的每台机器上已经安装了Spark和Scala,所以在图3-22的OutputLayout选项中可以把Spark应用所依赖的Spark和Scala的Jar包都删除,这样做的好处是可以减小输出的Jar包的大小。然后点击“OK”按钮,完成打包的第一步。

978-7-111-52860-9-Chapter03-107.jpg

图3-19 SparkPi.scala应用程序

978-7-111-52860-9-Chapter03-108.jpg

图3-20 打包

978-7-111-52860-9-Chapter03-109.jpg

图3-21 选择SparkPi为Main Class

978-7-111-52860-9-Chapter03-110.jpg

图3-22 删除依赖的Spark和Scala的Jar包

(5)接下来就要进行Jar包的编译工作了,在主菜单的上方选择“Build”菜单栏→“Build Artifact”选项,来编译Jar包(如图3-23所示)。

978-7-111-52860-9-Chapter03-111.jpg

图3-23 编译Jar包第一步

(6)对于编译,第一次编译的时候选择“Build”选项,如果以后同样的工程要做编译,就需要选择“Rebuild”选项(如图3-24所示)。

978-7-111-52860-9-Chapter03-112.jpg

图3-24 编译Jar包第二步

(7)编译完成后,可以到指定目录下(在打包时设置的输出目录下)查看编译成功的Jar文件(如图3-25所示)。

(8)在Spark集群的Master结点,通过使用交互式工具Spark Submit把生成的Jar包提交给Spark集群运行。

978-7-111-52860-9-Chapter03-113.jpg

图3-25 FirstSparkAppJar包所在的目录

首先进入Spark的bin目录,然后在shell命令终端输入以下命令:

978-7-111-52860-9-Chapter03-114.jpg

其中spark-submit是向Spark集群提交任务的工具;--master spark://SparkMaster:7077指的是Master结点的地址;--class SparkPi指的是Main方法所在的object;/root/Downloads/ FirstSparkApp/out/artifacts/FirstSparkAppJar/FirstSparkAppJar.jar指的是Jar所在地址。

运行结果如下面所示,跟前面我们通过在Intellij IDEA运用Local模式的结果一致,都是输出:Pi is roughly 3.13544。

978-7-111-52860-9-Chapter03-115.jpg

至此,基于Intellij IDEA的Spark开发环境搭建以及Spark程序在Local模式和Spark集群模式下的实践操作就分析完了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈