矽谷之路57:深入淺出Spark(八)如何處理實時數據

Spark支持流處理,可以從socket、kafka等數據源獲取數據,進行MapReduce,machine learning等計算,最後將結果存儲在HDFS、Cassandra等。為什麼使用Spark呢?因為Spark擴展性強、吞吐率高、容錯性好。

一般來說hadoop適用於批量處理,Storm適用於實時處理,Spark希望做一個集大成者,既能批量處理又能實時處理。

實時處理有什麼應用呢?比如我們要分析網站的用戶行為,可以將不斷更新的用戶數據存在kafka消息隊列里,Spark每隔一段時間從kafka里獲取數據進行統計分析。

Spark是如何處理流數據的呢?是通過對輸入數據進行打包處理,其實還是轉化成了批量處理進行計算。

比如我們設定時間間隔為5s,數據流不斷寫入block,等到達5s會將5s內寫的block打包成為一個RDD。

Spark還支持多個數據源輸入,每個數據源會打包生成自己的RDD,然後通過union操作將RDD合併。

有一個很有意思的case是每隔2s統計過去3s的用戶量。RDD之間有overlap,按照上面的方式打包無法進行計算。所以Spark里可以定義滑動窗口,根據需要生成RDD(有overlap)。

本文整理作者:Mengying Tian,查看完整視頻:http://www.bittiger.io/classes

更多內容,請訪問:BitTiger.io, 掃描下面二維碼,關注微信公眾賬號「論碼農的自我修養」

推薦閱讀:

深入淺出Spark(三)什麼是Standalone
[譯]打造大數據產品:Shiny的Spark之旅
矽谷之路54:深入淺出Spark(七)如何排序100TB
大數據那些事(9):起早貪黑竹籃打水的18摸(IBM)
深度剖析Spark分散式執行原理

TAG:Spark | 实时数据 |