本地Spark程序调试需要使用local提交模式,即将本机当做运行环境,Master和Worker都为本机,运行时直接加断点调试即可。
1、断点调试
尖叫提示:如果本机操作系统是windows,如果在程序中使用了hadoop相关的东西,比如写入文件到HDFS,则会遇到异常 “Java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binaries”,出现这个问题的原因,并不是程序的错误,而是用到了hadoop相关的服务,解决办法是将附加里面的hadoop-common-bin-2.7.3-x64.zip解压到任意目录,在IDEA中配置Run Configuration,添加HADOOP_HOME变量
2、解压
3、配置Run Configuration 添加HADOOP_HOME
(1)Run -> Edit Configurations ...
(2)Environment Variables -> + -> HADOOP_HOME -> ok
4、编写程序
package com.victor.spark
import org.apache.spark.{SparkConf, SparkContext}
object Application extends App{
// 1、 声明一个spark conf 对象,用于配置spark连接
val sparkconf = new SparkConf().setAppName("wordcount").setMaster("local[*]")
// 2、创建一个spark context 用于连接spark 集群
val sparkContext = new SparkContext(sparkconf)
// 3、加载需要处理的数据文件
val textfile = sparkContext.textFile("hdfs://hadoop102:9000/README")
// 4、处理数据
val result = textfile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
// 5、输出数据文件的结果
result.saveAsTextFile("hdfs://hadoop102:9000/out")
//result.collect().foreach(println _)
// 6、关闭spark集群的连接
sparkContext.stop()
}