IDEA2017 maven Spark HelloWorld项目(本地断点调试)

作为windows下的spark开发环境
1.应用安装 首先安装好idea2017 java8 scalaJDK spark hadoop(注意scala和spark的版本要匹配)
2.打开idea,创建建maven项目,如图所示

项目创建好后,记得勾选maven auto upate选项,这个动作会触发idea自动下载maven依赖的包 

3.修改pom文件如下 

<properties>
  <scala.version>2.11.11</scala.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>${scala.version}</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.4</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.specs</groupId>
    <artifactId>specs</artifactId>
    <version>1.2.5</version>
    <scope>test</scope>
  </dependency>
</dependencies>

<configuration>
  <scalaVersion>${scala.version}</scalaVersion>
  <args>
    <arg>-target:jvm-1.8</arg>
  </args>
</configuration>

4.删除test文件夹(因为会报junit等错误),在scala下创建新scala Object

并在Hello中加入main函数,最终Hello类如下 

object Hello {
  def main(args: Array[String]): Unit = {
    println("main begin...............")
    // 设置Spark的序列化方式
    System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
    // 初始化Spark
    val sparkConf = new SparkConf().setAppName("sparkDemo")
    val sc = new SparkContext(sparkConf)

    val a = sc.parallelize(List(1,2,3,3))
    val b = a.map(x => x+1)

    //    textfileTest("C:/Users/think/Desktop/1.txt");

    val colors = Map("red" -> "#FF0000",
      "azure" -> "#F0FFFF",
      "peru" -> "#CD853F")

    val nums: Map[Int, Int] = Map()

    println( "colors 中的键为 : " + colors.keys )
    println( "colors 中的值为 : " + colors.values )
    println( "检测 colors 是否为空 : " + colors.isEmpty )
    println( "检测 nums 是否为空 : " + nums.isEmpty )
    println("main end...............")
  }
}

5.开始断点调试

点击main方法左侧篮框,将会触发debug过程
如果出现以下错误
org.apache.spark.SparkException: A master URL must be set in your configuration
需要在debug config中的vm options加入下面这一行参数
-Dspark.master=local

6.调试界面
最终调试界面如下
 
原文地址:https://www.cnblogs.com/wzj4858/p/8204301.html