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

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

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

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

效果如下
在这里插入图片描述
会发现无法识别SparkSession,是因为Spark相关程序依赖没有加入进来,下载spark-2.1.1-bin-hadoop2.7,加入其中的jars文件夹,打开File -> ProJect Structure -> Libraries ->Java
在这里插入图片描述
选择下载的Spark依赖包的jars文件夹
在这里插入图片描述
加入之后

在这里插入图片描述
此时便可以运行Spark 程序了,右键选择Run ‘Demo’
在这里插入图片描述
等待除结果吧
另外,如果代码中没有设置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.<init>(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.<init>(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()

第二种,在运行参数中设置
在这里插入图片描述
在VM options中设置-Dspark.master=local
在这里插入图片描述

你可能感兴趣的:(大数据,Spark,IDEA)