【spark 學習筆記】Spark學習筆記精華(1)
阿新 • • 發佈:2019-02-17
好記性不如爛筆頭,順便就開始用手機練習打字了,也分享給感興趣的朋友學習下。
1.take可以檢視RDD中前面幾個元素,而且代價很小。
rdd.take(5)
2.可以用takeSample對資料進行取樣,它的第一個引數表示是否允許重複取樣。
rdd.takeSample(true,3)
3.top返回資料集中按給定ordering方式排序的最大的k條記錄,許多場景都要用到它,比如對每條記錄打分之後,檢查得分最高的記錄。
rdd.top(3)(ordering.by(_._2))
4.與top正好相反,takeordered返回最小的記錄。
rdd.takeordered(3)(ordering.by (_._2))
5.sample函式常用於在一系列處理過程中生成分散式資料集。它第一個引數支援重複取樣和非重複取樣,第二個引數它接收一個表示取樣比例的引數。
rdd.sample(true,0.6)
6.randomSplit返回多個RDD,它們合在一起就是父RDD,這個函式常用於將資料集分為訓練集和測試集。
fullData.cache()
val (train,test)=fullData.randomSplit(Array(0.6,0.4))
7.spark的累加器用於在作業執行的同時收集某些統計資訊,每個任務執行時能增加累加器的值,驅動程式也能讀取累加器的值。如果沒有累加器,要得到相同的結果,就需要快取RDD並且需要在RDD上執行另一個行動。有了累加器,這樣得到結果的效率就大大提高,從這個意義來看累加器是一種優化。
8. 若想會寫spark程式,就必須理解spark的轉換,行動和RDD,但若想寫好spark程式,就必須理解spark的底層執行模型,只有這樣才能領悟spark程式的效能特點,才能在程式出錯或者執行緩慢的時候進行除錯,才能理解spark的使用者介面。
9.一個spark程式由一個驅動程式程序和執行程式程序組成,對於spark-shell來說,這個驅動程式程序就是與使用者互動的程序。執行程式程序負責以任務的形式執行作業,同時也負責根據使用者要求將資料存入快取。
10.執行模型的最上層是作業,在spark應用程式內呼叫行動時會觸發spark作業來執行行動。要確認作業的基本資訊,spark會檢查行動的RDD依賴關係圖並生成執行計劃,執行計劃從依賴關係中最靠前的RDD開始,將依賴關係路徑上的RDD全部彙集起來,以得到行動的結果。
11. spark檔案格式常使用textFile,Avro和Parquet分別是hadoop叢集上用於儲存資料的行式和列式格式。
12.Mlib在Spark之上實現了一組機器學習演算法,MLlib把資料表示為稀疏或者稠密的vector物件,它提供了操作Matrix和RowMatrix物件的輕量級線性代數功能。Matrix表示本地矩陣,而RowMtrix表示向量的分散式集合。
13.Spark Streaming 的工作原理是在小時間間隔裡對資料進行彙總從而形成小批量,然後在小批量資料上執行作業。
14.Spark SQL 基於spark引擎對HDFS上的資料集或者已有的RDD執行SQL查詢,有了SparkSQL就能在Spark程式裡用sql語句操作資料了,是不是很開森。
15.sparkSQL的核心資料結構是schemaRDD,包含模式資訊,模式資訊給出了每列的名稱和型別。
16.GraphX是spark的子專案,基於spark引擎進行圖計算,圖演算法可用於研究社交網路中的使用者關係,GraphX用兩個RDD(頂點RDD和邊RDD)來表示圖。