本文來自2019杭州雲栖大會大資料生态專場中的分享《Spark Relational Cache實作亞秒級響應的互動式分析》
作者:王道遠,花名健身,阿裡雲EMR技術專家,Apache Spark活躍貢獻者,主要關注大資料計算優化相關工作。
視訊連結:
https://tianchi.aliyun.com/course/video?spm=5176.12282027.0.0.369a379cZrDREc&liveId=41101
項目介紹
EMR為使用者提供了豐富的應用,可以進行各種資料分析。
在雲上進行資料分析時,需要在支援大規模資料的同時,實作快速的分析。Spark目前使用者數量龐大,然而Spark目前的資料緩存機制,不支援緩存在跨會話共享,也需要使用者改寫SQL查詢才能利用緩存好的資料。
Spark Relational Cache 内建于EMR Spark中,為這種場景提供了一種解決方案。
Spark Relational Cache 使用者透明且支援資料更新,未來還會支援緩存方案自動推薦。
技術分析
核心技術主要分三部分:資料預計算、資料預組織、查詢自動重寫。
資料預計算:由于資料之間是直接有關系的,查詢間通常有一些通用模式。通過預計算可以大大加速查詢。
Spark Relational Cache 引入執行計劃重寫,使用者無需修改查詢語句即可使用緩存好的資料。
下面是兩個查詢自動重寫的簡單示例。
資料預組織則是為了進一步優化讀取預計算好的資料的過程。通過對資料進行排序和全局索引的建構,使用列式存儲格式,在需要讀取一定量的資料時,可以顯著減少查詢時間。
如何使用
Spark Relational Cache 提供了 DDL 語句用于定義緩存。
兩種資料更新政策,在加速的同時能保證資料準确。Spark Relational Cache目前也支援基于分區的增量更新,後續會有更細粒度的增量更新支援。
性能分析
用Star Schema Benchmark進行測試。
由于EMR Spark的優化,1TB資料建構時間約為1小時,明顯優于同類産品。
使用 Spark Relational Cache 可以獲得200倍以上的性能提升。
歡迎加入Spark技術交流釘釘二群進行交流: