Intellij IDEA构建Spark2.0以上工程示例

Intellij IDEA新建Spark2.0以上Maven工程示例

长时间不用IDEA新建工程,新建的步骤都忘记了,再次记录一下,Spark新版中SparkSession需要依赖的包与SparkContext不一样,需要导入的jar包也是不同的。这里需要安装Java的JDK,新建工程会用到。

首先,新建工程New -> Project
Intellij IDEA构建Spark2.0以上工程示例_第1张图片
选择Maven工程,选择JDK版本
Intellij IDEA构建Spark2.0以上工程示例_第2张图片
命名GroupId和ArtifactId,GroupId是项目所属组织的唯一标识,ArtifactId是项目的唯一标识,也是项目根目录的名称。
Intellij IDEA构建Spark2.0以上工程示例_第3张图片
点击Next,确认后Finish后,就是这样的项目结构
Intellij IDEA构建Spark2.0以上工程示例_第4张图片
此时源码src目录下面默认是有java文件夹的,可以看到颜色还不一样,表示是源码文件,我们需要新增scala文件夹,并且变成源码文件夹。打开项目设置 File -> Project Structure 或者快捷键Ctrl +Alt +Shift + S
Intellij IDEA构建Spark2.0以上工程示例_第5张图片
选择
Modules -> Source ->main,鼠标右键,显示New Folder
Intellij IDEA构建Spark2.0以上工程示例_第6张图片
填写scala名称,此时新建的文件夹还不是源码文件夹,需要选择scala文件夹,点击Source,变成源码文件夹
Intellij IDEA构建Spark2.0以上工程示例_第7张图片
此时在项目中新建源码文件,会显示如下
Intellij IDEA构建Spark2.0以上工程示例_第8张图片
会发现列表中没有Scala Class,因为项目中还没有添加Scala SDK,在Project Structure(或者快捷键Ctrl +Alt +Shift + S)中选择Libraries,点击“+”,新增Scala SDK
Intellij IDEA构建Spark2.0以上工程示例_第9张图片
会选择Scala SDK的版本,这里建议选择2.11以上,当然要选择和Spark版本匹配的
Intellij IDEA构建Spark2.0以上工程示例_第10张图片
加载完Scala SDK之后
Intellij IDEA构建Spark2.0以上工程示例_第11张图片
然后我们新建scala源码
Intellij IDEA构建Spark2.0以上工程示例_第12张图片
我们选择Object,这样可以演示直接运行
Intellij IDEA构建Spark2.0以上工程示例_第13张图片
假设类名取为Demo,填充如下代

import org.apache.spark.sql.SparkSession
import java.io.File

object Demo {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder()
      .master("local[*]")
      .appName("Spark SparkSession basic example")
      .getOrCreate()

    val peopleDFCsv = spark.read.format("csv")
      .option("sep", "\t")
      .option("header", "false")
      .load("C:\\Users\\yourUserName\\Desktop\\sample.csv")
    peopleDFCsv.printSchema()

    peopleDFCsv.show(10)

    //    val a = new File("./data").listFiles()
    //    a.foreach(file => println(file.getPath))
  }
}

效果如下
Intellij IDEA构建Spark2.0以上工程示例_第14张图片
会发现无法识别SparkSession,是因为Spark相关程序依赖没有加入进来,

下载spark-2.1.1-bin-hadoop2.7(下载地址:http://archive.apache.org/dist/spark/spark-2.1.1/),

加入其中的jars文件夹,打开File -> ProJect Structure -> Libraries ->Java
Intellij IDEA构建Spark2.0以上工程示例_第15张图片
选择下载的Spark依赖包的jars文件夹
Intellij IDEA构建Spark2.0以上工程示例_第16张图片
加入之后

Intellij IDEA构建Spark2.0以上工程示例_第17张图片
此时便可以运行Spark 程序了,右键选择Run ‘Demo’
Intellij IDEA构建Spark2.0以上工程示例_第18张图片
等待除结果吧
另外,如果代码中没有设置master

    val spark = SparkSession
      .builder()
      .appName("Spark SQL basic example")
      .getOrCreate()

会有如下错误

ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: A master URL must be set in your configuration
	at org.apache.spark.SparkContext.(SparkContext.scala:379)
	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2320)
	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
	at scala.Option.getOrElse(Option.scala:121)
	at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)
	at Demo$.main(Demo.scala:10)
	at Demo.main(Demo.scala)
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
	at org.apache.spark.SparkContext.(SparkContext.scala:379)
	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2320)
	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
	at scala.Option.getOrElse(Option.scala:121)
	at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)
	at Demo$.main(Demo.scala:10)
	at Demo.main(Demo.scala)

有两种解决方案,第一种

    val spark = SparkSession
      .builder()
      .master("local[*]")  // 使用所有线程
      .appName("Spark SQL basic example")
      .getOrCreate()

第二种,在运行参数中设置
Intellij IDEA构建Spark2.0以上工程示例_第19张图片
在VM options中设置-Dspark.master=local
Intellij IDEA构建Spark2.0以上工程示例_第20张图片

你可能感兴趣的:(Spark走马观花)