本文介绍使用IDEA进行Spark开发的搭建方法。
(一) 下载IDEA 打开网址
http://www.jetbrains.com/idea/download/
显示界面如下
选择Community 版本下载。
(二)安装 进入下载目录,可看到新增文件 ideaIC-2019.2.2.tar.gz
执行以下命令,进行解压配置。
$ tar -xzvf ideaIC-2019.2.2.tar.gz $ cd idea-IC-192.6603.28/ $ ./bin/idea.sh
(三)安装scala插件 在欢迎界面点击Configure,选择Plugins,如下图所示:
在弹出的界面中选择scala,进行安装,界面如下:
(四)配置全局JDK和Library 在欢迎界面点击Configure,选择Structure for New Project,如下图所示:
在弹出的界面的左侧边栏选择Project,在右侧打开的页面中创建一个新的JDK选项,如下图所示步骤在下拉菜单中点击JDK后,在打开的对话框中选择你所安装JDK的位置。注意是JDK安装的根目录,就是JAVA_HOME中设置的目录。
(五)配置全局的Scala SDK 上节的界面中左侧选择Global Libraries,然后在中间一栏中有一个绿色的加号标志 +,点击后在下拉菜单中选择 Scala SDK。
然后在打开的对话框中选择系统本身所安装的Scala,点击OK确定,这时候会在中间一栏位置处出现Scala的SDK,在其上右键点击后选择Copy to Project Libraries…。若本机未安装Scala,可点击底部的安装按钮,进行安装,完成后界面如下图所示:
(六)新建maven项目 在欢迎界面点击Create New Project,在打开的页面左侧边栏中,选择Maven,然后点击Next,填写三个参数:GroupId, ArtifactId和Version. 点击Finish,创建完成。
(七)增加Scale支持 删除文件夹 main\java, main\resources 和 test 这三个;
将Scala的框架添加到这个项目中,方法是在左侧栏中的项目名称上右键菜单中点击Add Framework Support…,然后在打开的对话框左侧边栏中,勾选Scala前面的复选框,然后点击确定即可。
在main文件夹中建立一个名为 scala 的文件夹,并右键点击 scala 文件夹,选择 Make Directory as,然后选择Sources Root。
在已经标记好为源文件根目录的 scala 文件夹 上,右键选择 New,然后选择 Scala Class,随后设置好程序的名称,并且记得将其设置为一个 Object(类似于Java中含有静态成员的静态类)。
在创建的 Object 中输入如下语句:
def main(args: Array[String]):Unit = {println("Hello World!")}
在程序界面的任意位置,右键单击后选择 Run '你的程序名称',程序的编译和运行完成后,会在下方自动打开的窗口中显示 Hello World!。
(八)添加spark依赖 打开pom.xml文件添加如下依赖。其中spark 和Scala的版本是对应的。
<properties> <spark.version>2.0.2</spark.version> <scala.version>2.11</scala.version> </properties> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-mllib_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
导入依赖以后保存后,Event Log窗口中的Import Changes 或 Enable Auto-Import,引入jar 包,如下图:
(九)编写Spark代码 依赖添加成功后,就可以创建Spark代码了,本文以对数据进行过滤求和的代码为例进行说明,代码如下:
import org.apache.spark.{SparkConf, SparkContext}
object MySpark { def main(args: Array[String]) { val conf = new SparkConf().setAppName("mySpark") conf.setMaster("local") val sc =new SparkContext(conf) val rdd =sc.parallelize(List(1,2,3,4,5,6,7,8,9)).map(_*3) val mappedRDD=rdd.filter(_>10).collect() println(rdd.reduce(_+_)) for(arg <- mappedRDD) print(arg+" ") println() println("math is work") } }
代码编写好以后,右键 run ‘mySpark’ 运行。
(十)打包 运行成功后,可以讲代码打包成jar 包发送到远端或者本地的spark 集群上运行。打包有以下步骤
(1)点击“File”然后选择“project Structure”- “Artifacts”添加 “JAR”,如下图:
在弹出的对话框中,按下图进行操作。
由于我们的jar包是在Spark 上运行的,所以与Spark有关的包可以删除,如下图所示,删除其他不需要的包,只留下红色矩形中的两个。
执行 菜单Bulid——Build Artifacts 构建你的jar。
(十一)运行 进入 Spark 安装目录,执行以下命令:
./bin/spark-submit --class MySpark --master spark://spark1:7077 ~/Idea/mySpark/out/artifacts/mySpark_jar/mySpark.jar
其中: MySpark :启动类的名字,如果有包命,需要带包名。 spark1:7077 :是你远端的spark 的地址。 ~/Idea/mySpark/out/artifacts/mySpark_jar/mySpark.jar:是jar 包的路径。
---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:程序员空间,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ----------------------------------------------------------------------------------------------------------------------
|