作者:csj
更新時間:01.15
email:59888745@qq.com
說明:因內容較多,會不斷更新 xxx學習總結;
回主目錄:2017 年學習記錄和總結
1 安裝spark及簡介
spark 是用scala語言編寫的一套分散式記憶體計算系統,他的核心抽象模型是RDD(彈性分散式資料集),圍繞rdd構件了一系列分散式API
可以直接對資料集進行分散式處理。 相對於mapreduce上的批量計算,跌代計算,以及基於hive的sql查詢,spark可以帶來1到2個數量級的效力提 升。
spark shell
shark:sql spark
spark streaming
MLLIB
GRAPHX
2.spark shell
載入text檔案
spark shell 執行
3.spark 應用
用sbt構建spark作業
用maven構建spark作業
4.create sparkcontext
1.讀取一個外部資料集,讀取外部資料及時需要用到SparkContext.textFile()
lines = sc.textFile("README.md")
2.在記憶體中對一個集合進行並行化(parallelize)
A = [1,2,3,4,5]
lines = sc.parallelize(A)
3. RDD的操作命令很多,
Transformation操作:包括map(),filter()等
Action操作:reduce(),fold(),aggregate()等。
4.常見的Transformation操作:
map( )和flatMap( )的聯絡和區別
map( ):接收一個函式,應用到RDD中的每個元素,然後為每一條輸入返回一個物件。
filter( ):接收一個函式,將函式的元素放入新的RDD中返回。
flatMap( ):接收一個函式,應用到RDD中的每個元素,返回一個包含可迭代的型別(如list等)的RDD,可以理解為先Map(),後flat()
scala
java和scala共享API
5.load and save data
load DATA
save Data
Link
6. RDD
java和scala操作RDD
python 操作RDD
7.spark-Hive
Hive/Shark
install,run,load Shark
HiveQL
8.test
java和scala test
python test
9.技巧
併發,記憶體使用,垃圾回收,序列化等
------------------remark-------------------
Spark的基本概念和RDD的特性以及一些簡單的命令
1.RDD: 不可變, 分散式
2.RDD支援兩種操作:
a.Tansformation(轉化操作):返回值新的RDD還是一個RDD. 如map()接收一個函式,應用到RDD中的每個元素,filter()接收一個函式,將函式的元素放入新的RDD中返回等
b.Action(行動操作):返回值不是一個RDD, 如count(),first(),reduce(),fold(),aggregate()
從一個RDD轉換生成另一個RDD的操作不是馬上執行,只是記錄下來,只有等到有Action操作是才會真正啟動計算,將生成的新RDD寫到記憶體或hdfs裡,不會對原有的RDD的值進行改變
3.create RDD:
a.讀取一個外部資料集
b.在記憶體中對一個集合進行並行化(parallelize) 1 A = [1,2,3,4,5] 2 lines = sc.parallelize(A)
讀取外部資料及時需要用到SparkContext.textFile()/lines = sc.textFile("README.md")
3.1 如何向Spark傳遞函式:簡單的函式:lambda表示式/ def函式
鍵值對操作、資料的讀取和儲存以及累加器、廣播變數等
4. 鍵值對(PaiRDD)
4.1建立: pairs = lines.map(lambda x:(x.split(" ")[0],x))
4.2 鍵值對轉化(Transformation): 有reduceByKey,foldByKey(),combineByKey()等,與普通RDD中的reduce()、fold()、aggregate()等類似,只不過是根據鍵來進行操作
4.3行動操作(Action)
5. 資料的讀取與保存:txt,json,csv,sf/Hadoop,file
6. 累加器: 對資訊進行聚合
廣播變數
數值RDD的操作:count(),mean(),sum(),max(),min()
Spark的執行過程(本地+叢集),效能調優以及Spark SQL相關的知識
7. Spark的執行架構以及在叢集上的配置:驅動器節點/執行器節點/叢集管理器(啟動獨立叢集管理器, 提交應用, 配置資源用量,):
8.Spark SQL性能: 是記憶體式的列式儲存,即Parquet格式,不僅節約了快取時間,而且儘可能的減少了後續查詢中針對某幾個欄位時的資料讀取。
Spark Streaming 和MLlib方面的內容
9.Spark Streaming
DStream •概念:離散化流(discretized stream),是隨時間推移的資料。由每個時間區間的RDD組成的序列。DStream可以從Flume、Kafka或者HDFS等多個輸入源建立。
•操作:轉換和輸出,支援RDD相關的操作,增加了“滑動視窗”等於時間相關的操作。
10.基於MLlib的機器學習,在叢集上跑的演算法必須是專門寫的分散式演算法