學習Spark的基本組件,主要由SparkSql、SparkStreaming等構成,簡單理解其基本原理,構建Spark生態的全貌。
一、Spark Sql常識
Spark Sql提供了對于結構化和半結構化數據的快速操作,主要具備以下三種功能,
(1)從多種結構化數據源(json、parquet和hive)中讀取數據
(2)支持Spark應用程序內部調用和外部工具通過標準連接器連接Spark Sql進行查詢
(3)Spark Sql中sql與Java/Python/Scala代碼高度整合
二、Spark Streaming常識
(1)Spark Streaming中使用離散化流作抽象表示并稱為DStream,其由RDD組成的隊列
(2)Spark Streaming支持兩種操作,轉化操作和輸出操作,轉化操作輸出為新的DStream,輸出操作將結果輸出到硬盤上。轉化操作包括無狀態和有狀態,重點關注有狀態的轉化操作。
(3)有狀態的操作主要是兩種類型,一種以時間階段為滑動窗口進行操作,一種用來跟蹤每個鍵的狀態變化。基于窗口的操作需要兩個參數,分別為窗口時長和滑動步長,兩者都必須是SparkContext設置的批次間隔的整數倍,前者控制每次計算最近的多少個批次的數據,后者用來控制對新的DStream進行計算的間隔,如圖所示,
1-基于窗口的轉化操作
當需要在DStream跨批次維護狀態時,使用updateStateByKey()為我們提供對一個狀態變量的訪問,用于鍵值對形式的DStream,比如跟蹤用戶訪問網站的會話。