Delta Lake


Delta Lake

重點問題

Delta Lake API 支持哪種類型的寫操作?

Delta Lake 可以解決哪些需求?

快點清理掉被合並掉的小文件,如何設置安全期參數

什么是 Delta Lake

整體來看的話,其實就是在數據入hdfs之前多了delta lake這層組件,能夠對小文件合並,臟數據處理,api操作上仍舊是sql.

存儲之大、ACID、歷史回放、文件合並、無服務(對比Hive metastore),都算數據湖方案的特性。也都是數據倉庫的痛點

Delta Lake 基本功能

數據集 https://www.kaggle.com/wendykan/lending-club-loan-data/data,

loans.csv: 145Cols, 1.11GB unzipped

使用Delta Lake構建分析管道

Delta Lake 高級功能

QA

數據湖底層存儲的方式是怎樣的?

底層存儲的其實就是數據文件(列式/壓縮格式自行選擇),存儲在哪自行選擇,可hdfs/s3/local

這種方式屬於單表點對點的采集,多表同時采集,是否消費kafka多次?

如果是多表的話,需要在 kafka 內建多個 topic

那如果源端MySQL是做的DDL alter rename column豈不是會將schema污染?

delta lake 有 schema 更新的功能,但是 schema 更新目前還不支持 rename column。而且,目前這套基於 binlog 的方案也不支持將上游的 rename column 反應到 delta lake 中。

delta lake如何保障事務一致性這塊能細說一下嗎

事務一致性是說數據庫中表內的數據滿足一定的約束條件,這塊內容屬於 OLTP 的范疇,delta 並不支持。delta 支持的事務是說保證並發事務之間不相互污染。說的一致性是不是分布式存儲的一致性?如果是這個的話,是靠底層存儲(HDFS,OSS)等來保證的,這兩個一致性的含義不一樣。

上下游刪除更新數據,delta lake 怎么保證

上游刪除數據,刪除數據的動作會被傳遞到 delta lake 中,delta lake 會同步刪除數據。但是以 delta lake 為數據源的 streaming 作業,並不能處理該刪除數據的動作,因為刪除之前的數據已經被 streaming 處理過了。對於這種情況,以 delta lake 為數據源的 streaming 作業會拋異常。如果要 streaming 作業不拋異常,可以設置忽略 delta lake 中的 delete 事件

deltaLake是怎么處理並發讀寫的問題的?

delta lake 有樂觀機制的事務保證,讀事務和寫事務之間不存在沖突。寫寫之間可能會有沖突。這個時候先提交的事務會成功,另外一個失敗

這個delta lake是要在在這些小文件流批處理場景下替代hive嗎?

hive 對流不怎么支持,小文件,如果用 hive 事務功能的話,也會有小文件,但是 delta 的小文件更多的是流產生的,量要比 hive 大。你說在這個場景下替代 hive,我覺着這個說法不太准確。delta 的賣點是對湖中的數據做好管理,支持流批一體。與 hive 還是有區別的。當然 delta 可以代替 hive,反之不行。

Delta Lake 是阿里開發的還是開源的 可以讀取mysql 數據源寫入到阿里的dataworks嗎?

開源的。讀取數據庫的 binlog,寫入到 delta lake

delta lake的輸出和普通parquet輸出目錄會多metastote,log燈信息,那么這個輸入spark.read.parquet()也可以直接處理吧,需要有什么注意的地方嗎?

spark.read.format("delta"), 不能直接 spark.read.format("parquet"), 雖然底層是 parquet 文件,但是是兩種 datasource。delta 維護了歷史版本,因此數據目錄下會有多個版本的 parquet 文件。如果把它當成 parquet 直接讀的話,數據就不准確了


免責聲明!

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



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