學(xué)習(xí)Spark的基本組件,主要由SparkSql、SparkStreaming等構(gòu)成,簡單理解其基本原理,構(gòu)建Spark生態(tài)的全貌。
一、Spark Sql常識
Spark Sql提供了對于結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的快速操作,主要具備以下三種功能,
(1)從多種結(jié)構(gòu)化數(shù)據(jù)源(json、parquet和hive)中讀取數(shù)據(jù)
(2)支持Spark應(yīng)用程序內(nèi)部調(diào)用和外部工具通過標(biāo)準(zhǔn)連接器連接Spark Sql進(jìn)行查詢
(3)Spark Sql中sql與Java/Python/Scala代碼高度整合
二、Spark Streaming常識
(1)Spark Streaming中使用離散化流作抽象表示并稱為DStream,其由RDD組成的隊列
(2)Spark Streaming支持兩種操作,轉(zhuǎn)化操作和輸出操作,轉(zhuǎn)化操作輸出為新的DStream,輸出操作將結(jié)果輸出到硬盤上。轉(zhuǎn)化操作包括無狀態(tài)和有狀態(tài),重點關(guān)注有狀態(tài)的轉(zhuǎn)化操作。
(3)有狀態(tài)的操作主要是兩種類型,一種以時間階段為滑動窗口進(jìn)行操作,一種用來跟蹤每個鍵的狀態(tài)變化?;诖翱诘牟僮餍枰獌蓚€參數(shù),分別為窗口時長和滑動步長,兩者都必須是SparkContext設(shè)置的批次間隔的整數(shù)倍,前者控制每次計算最近的多少個批次的數(shù)據(jù),后者用來控制對新的DStream進(jìn)行計算的間隔,如圖所示,

當(dāng)需要在DStream跨批次維護(hù)狀態(tài)時,使用updateStateByKey()為我們提供對一個狀態(tài)變量的訪問,用于鍵值對形式的DStream,比如跟蹤用戶訪問網(wǎng)站的會話。