package ***** import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: Array[String]): Unit = { //設置分布式的運行平台,和appname //使用Master運行平台,yarn,standalong(spark自帶的運行平台),mesos,local四種 //local開發調試時用的環境,前三種一般為上線的運行環境 //local local[N] local[*] val conf = new SparkConf().setMaster("local[1]").setAppName("WordCount") //構建sparkContext對象 val sc = new SparkContext(conf) //加載數據源,獲取RDD對象 val textFile = sc.textFile("C:\\Users\\zuizui\\Desktop\\README.txt") val counts = textFile.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_) counts.saveAsTextFile("C:\\Users\\zuizui\\Desktop\\result.txt") } }
例子為本地的路徑
spark計算過程:
spark程序運行在分布式計算平台之上,Driver會生成一個DAG調度,就是job中的有向無環圖,之后會向nodeManager申請資源,nodemanager會創建多個executor,driver中的DGA調度中的task會轉移到executor上進行計算,
executor上的task的計算結果會保存在executor的memcache(內存)中,接着進行寫一個task的計算,直到有一個task要寫到磁盤上;