DT_大數據夢工廠 第8課 徹底實戰詳解使用IDE開發Spark程序

2016/1/9 課堂筆錄

Scala開發IDE:IDEA和Eclipse

開發系統:一般推薦Windows7 64位。

Eclipse開發
    
開發第一個Scala程序
第一步:修改依賴的Scala版本爲Scala 2.10.x
               Scala Library container: 2.10.6
第二步:加入Spark 1.6.0的jar文件依賴
JRE System Library: JavaSE-1.8開發

第三步:找到依賴的Spark Jar文件並導入到Eclipse中的Jar依賴;
第四步:在src下建立Spark工程包 com.dt.spark
              
第五步:創建Scala入口類

第六步:把class變成object並編寫main入口方法
--
第1步:
創建Spark的配置對象SparkConf,設置Spark程序的運行時的配置信息,
例如說通過setMaster來設置程序要鏈接的Spark集羣的Master的URL,
如果設置爲local,則代表Spark程序在本地運行,特別適合於機器配置比較差的初學者。
//創建SparkConf對象
val conf = new SparkConf()
//設置應用程序的名稱,在程序運行的監控界面可以看到名稱
conf.setAppName("Wow,My First Spark App!")
//此時,程序在本地運行不需要安裝Spark集羣
conf.setMaster("local") 
//如果是集羣時,通常不寫conf.setMaseter方法,
//spark-submit 時指定參數,  --master spark://Master:7077 

第2步:SparkContext對象
SparkContext是Spark程序所有功能的唯一入口 ,無論採用Scala,Java,Python,R等 必須要有一個SparkContext; 
SparkContext核心作用:初始化Spark應用程序運行所需要的核心組件 ,包括DAGScheduler,TaskScheduler,SchedulerBackend,
同時還會負責Spark程序往Master註冊程序等。
SparkContext是整個Spark應用程序中最爲至關重要的一個對象。

創建SparkContext對象,通過傳入SparkConf實例來定製Spark運行具體參數和配置信息
val sc = new SparkContext(conf)


第3步:根據具體的數據來源(HDFS,HBASE,Local FS,BS,S3等)
RDD的創建基本有三種方式:根據外部的數據來源(如HDFS)、根據Scala集合、由其它的RDD操作數據會被RDD劃分成爲一系列的Partitions, 分配到每個Partition的數據屬於一個Task的處理範疇。

val lines = sc.textFile("D://Big_Data_Software//spark-1.6.0-bin-hadoop2.6//READ.md",1)

第4步:對初始的RDD進行Transformation級別的處理,
例如map、filter等高階函數等的編程,來進行具體的數據計算。
第4.1步:講每一行的字符串拆分成單個的單詞
val words = lines.flatMap { line => line.split(" ")}

第4.2步:在單詞拆分的基礎上對每個單詞實例計數爲1,也就是word=>(word,1)
val pairs = words.map {world =>(word,1)}


第4.3步:在每個單詞實例計數爲1 基礎之上統計每個單詞在文件中出現的總次數
對相同的key,進行Value的累計(包括Local和Reducer級別同時Reduce)

val wordCounts = pairs.reduceByKey(_+_)
wordCounts.collect.foreach(wordNumberPair => println(wordNumberPair._1 + " : " + wordNumberPair._2))
sc.stop()

//第8課作業:在Eclipse中寫好廣告點擊排名的程序並測試

寫一個Shell,wordcount.sh
usr/local/spart/spark-1.6.0-bin-hadoop2.6/bin/spark-submit--class com.dt.spark.WordCount_Cluster --master spark://Master:7077 /root/Documents/SparkApps/WordCount.jar

執行shell時可能沒權限出錯。
chmod 777 wordcount.sh

附上王老師個人名片信息
王家林  中國Spark第一人
DT大數據夢工廠
新浪微博: http://weibo.com.ilovepains/
微信公共號:DT_Spark
博客:http://bolg.sina.com.cn/ilovepains
手機:18610086859
qq:1740415547
郵箱:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章