本地Spark程序調(diào)試需要使用local提交模式,即將本機(jī)當(dāng)做運(yùn)行環(huán)境生巡,Master和Worker都為本機(jī),運(yùn)行時(shí)直接加斷點(diǎn)調(diào)試即可结序。
1障斋、斷點(diǎn)調(diào)試
尖叫提示:如果本機(jī)操作系統(tǒng)是windows纵潦,如果在程序中使用了hadoop相關(guān)的東西徐鹤,比如寫(xiě)入文件到HDFS,則會(huì)遇到異常 “Java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binaries”邀层,出現(xiàn)這個(gè)問(wèn)題的原因返敬,并不是程序的錯(cuò)誤,而是用到了hadoop相關(guān)的服務(wù)寥院,解決辦法是將附加里面的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、編寫(xiě)程序
package com.victor.spark
import org.apache.spark.{SparkConf, SparkContext}
object Application extends App{
// 1估蹄、 聲明一個(gè)spark conf 對(duì)象塑煎,用于配置spark連接
val sparkconf = new SparkConf().setAppName("wordcount").setMaster("local[*]")
// 2、創(chuàng)建一個(gè)spark context 用于連接spark 集群
val sparkContext = new SparkContext(sparkconf)
// 3臭蚁、加載需要處理的數(shù)據(jù)文件
val textfile = sparkContext.textFile("hdfs://hadoop102:9000/README")
// 4最铁、處理數(shù)據(jù)
val result = textfile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
// 5讯赏、輸出數(shù)據(jù)文件的結(jié)果
result.saveAsTextFile("hdfs://hadoop102:9000/out")
//result.collect().foreach(println _)
// 6、關(guān)閉spark集群的連接
sparkContext.stop()
}