spark 學習總結

大樹2發表於2018-01-15

 

作者: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的機器學習,在叢集上跑的演算法必須是專門寫的分散式演算法