DeltaLake數據湖解決方案


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的並行度,也能決定輸出的文件數。增加這個值雖然可以增加並行度,但也相應的增加了產生小文件數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM