Delta Lake 是DataBricks公司推出的一種數據湖解決方案,Delta為該方案的核心組件。圍繞數據流走向(數據入湖從流入數據湖、數據組織管理、數據查詢到流出數據湖)推出了一系列功能特性,
協助您搭配第三方上下游工具,搭建快捷、易用、和安全的數據湖。
通常的數據湖方案是選取大數據存儲引擎構建數據湖(例如阿里雲OSS等對象產品或雲下hdfs),然后將產生的各種類型數據存儲在該存儲引擎中。在使用數據時,通過Spark或Presto
對接數據分析引擎並進行數據解析。
應用場景:優點
Delta適用於雲上數據湖數據管理解決方案,以下場景可以使用Delta:
1、實時查詢:數據實時從上游流入Delta,查詢側即可查詢該數據。同時,由於支持ACID功能,保證了數據流入和查詢的隔離性,不會產生臟數據。
2、刪除或更新,通常數據湖方案不支持數據的刪除或更新。如果需要刪除或更新數據,則需要把原始數據清理掉,然后把更新后的數據寫入存儲。而Delta支持數據的刪除或更新。
3、數據實時同步,CDC(change data capture):使用Delta merge功能,啟動流作業,實時將上游的數據通過merge更新到Delta Lake中。
4、數據質量控制:借助於Delta Schema校驗功能,在數據導入時剔除異常數據,或者對異常數據做進一步處理。
5、數據演化:數據的schema並非固定不變,Delta 支持通過API方式改變數據的Schema。
6、實時機器學習
delta lake目前的不足:
1、更新操作很重,更新一條數據和更新一批數據的成本可能是一樣的,所以不適合一條條的更新數據
2、更新數據的方式是新增文件,會造成文件數量過多,需要清理歷史版本的數據,version最好不要保存太多、
3、樂觀鎖在多用戶同時更新時並發能力較差,更適合寫少讀多的場景
數據湖delta lake的最佳調優詳解
https://my.oschina.net/u/4590259/blog/4474138
1、選擇最佳恰當的分區列
對於delta表建議指定分區列。企業中最常見的分區列就是date,地域這些。
2、合並文件
如果是不斷將數據寫入Delta表,隨着時間的推移,會產生大量文件,尤其是如果小數據量的添加數據時。這個可能會大大降低表的查詢速率,也可能影響文件系統的性能。
理想情況下,應定期將大量的小文件重寫為少量較大的文件。
3、merge操作的性能調優
a、減少匹配查找的數據量
默認情況下,merge操作會掃描整個delta lake表找到滿足條件的數據。可以加些謂詞,以減少數據量。
b、合並文件
如果數據存儲的時候有很多小文件,就會降低數據的讀取速度。可以合並小文件成一些大文件,來提升讀取的速度。后面會說到這個問題。
c、控制shuffle的分區數
為了計算和更新數據,merge操作會對數據進行多次shuffle。shuffle過程中task數量是由參數spark.sql.shuffle.partitions來設置,默認是200。該參數不僅能控制shuffle的並行度,也能決定輸出的文件數。增加這個值雖然可以增加並行度,但也相應的增加了產生小文件數。
