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步:講每一行的字符串拆分成單個的單詞
第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第一人
新浪微博: http://weibo.com.ilovepains/
微信公共號:DT_Spark
博客:http://bolg.sina.com.cn/ilovepains
手機:18610086859
qq:1740415547
郵箱:[email protected]