如何用IntelliJ IDE build & run Spark
准备工作:
1. 下载并安装java 1.8(spark依赖)
2. 下载IntelliJ Community版本并安装,配置JDK。在欢迎界面右下角,选择Configure,选Structure for New Projects,在弹出来的对话框里面选择SDKs,找到你的JAVA_HOME,指定好,保存。
3. 下载spark源代码,本博客使用spark 2.3.0
4. 安装scala,切记安装spark源码pom.xml里面指定版本的scala,否则在IntelliJ里面会有问题。spark需要的scala版本写在pom.xml的scala.version里面,本博客依赖的scala版本是2.11.8,一定下载这个版本,解压,在IntelliJ的Global Libraries里面指定scala-sdk。
5. 将Spark源码根目录导入IntelliJ,执行build。这个过程有点长,需要十几分钟。只要版本配对,应该没有错误。
常见错误:
找一个example,比如SparkPi.scala,运行一下。一般会碰到错误:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Seq
at org.apache.spark.examples.SparkPi.main(SparkPi.scala)
Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
这个错误的解决很简单,右键点击要运行的SparkPi.scala,选择Edit ‘SparkPi’,在弹出来的对话框里面选中Include dependencies with "Provided" scope.
第二次运行,还会碰到错误“Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration”,这个是少了一个设置,为了不改源代码,我们会在Edit 'SparkPi'里面选择增加一个VM option: -Dspark.master=local
看到如下运行结果,证明一切ok了: