矽谷之路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分散式執行原理