本篇文章給大家分享的是有關(guān)如何進(jìn)行數(shù)據(jù)湖deltalake的分析,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、微信小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。
1.delta特性簡介
Delta Lake是Spark計(jì)算框架和存儲(chǔ)系統(tǒng)之間帶有Schema信息數(shù)據(jù)的存儲(chǔ)中間層。它給Spark帶來了三個(gè)最主要的功能:
第一,Delta Lake使得Spark能支持?jǐn)?shù)據(jù)更新和刪除功能;
第二,Delta Lake使得Spark能支持事務(wù);
第三,支持?jǐn)?shù)據(jù)版本管理,運(yùn)行用戶查詢歷史數(shù)據(jù)快照。
ACID事務(wù):為數(shù)據(jù)湖提供ACID事務(wù),確保在多個(gè)數(shù)據(jù)管道并發(fā)讀寫數(shù)據(jù)時(shí),數(shù)據(jù)能保持完整性。
數(shù)據(jù)版本管理和時(shí)間旅行:提供了數(shù)據(jù)快照,使開發(fā)人員能夠訪問和還原早期版本的數(shù)據(jù)以進(jìn)行審核、回滾或重現(xiàn)實(shí)驗(yàn)
可伸縮的元數(shù)據(jù)管理:存儲(chǔ)表或者文件的元數(shù)據(jù)信息,并且把元數(shù)據(jù)也作為數(shù)據(jù)處理,元數(shù)據(jù)與數(shù)據(jù)的對應(yīng)關(guān)系存放在事務(wù)日志中;
流和批統(tǒng)一處理:Delta中的表既有批量的,也有流式和sink的;
數(shù)據(jù)操作審計(jì):事務(wù)日志記錄對數(shù)據(jù)所做的每個(gè)更改的詳細(xì)信息,提供對更改的完整審計(jì)跟蹤;
Schema管理功能:提供自動(dòng)驗(yàn)證寫入數(shù)據(jù)的Schema與表的Schema是否兼容的能力,并提供顯示增加列和自動(dòng)更新Schema的能力;
數(shù)據(jù)表操作(類似于傳統(tǒng)數(shù)據(jù)庫的SQL):合并、更新和刪除等,提供完全兼容Spark的Java/scala API;
統(tǒng)一格式:Delta中所有的數(shù)據(jù)和元數(shù)據(jù)都存儲(chǔ)為Apache Parquet。
Delta的特性實(shí)現(xiàn)是基于事務(wù)日志,比如ACID事務(wù)管理、數(shù)據(jù)原子性、元數(shù)據(jù)處理和時(shí)間旅行等功能。
Delta Lake 說白了就是一個(gè)lib庫
Delta Lake 是一個(gè)lib 而不是一個(gè)service,不同于HBase,他不需要單獨(dú)部署,而是直接依附于計(jì)算引擎的。目前只支持Spark引擎。這意味什么呢?Delta Lake 和普通的parquet文件使用方式?jīng)]有任何差異,你只要在你的Spark代碼項(xiàng)目里引入delta包,按標(biāo)準(zhǔn)的Spark datasource操作即可,可謂部署和使用成本極低。
Delta Lake真實(shí)內(nèi)容幕
Parquet文件 + Meta 文件 + 一組操作的API = Delta Lake.
所以Delta沒啥神秘的,和parquet沒有任何區(qū)別。但是他通過meta文件以及相應(yīng)的API,提供眾多特性功能的支持。在Spark中使用它和使用parquet的唯一區(qū)別就是把format parquet換成detla。
上圖可以看出,數(shù)據(jù)湖目的實(shí)一站式提供各種數(shù)據(jù)服務(wù)。
2.delta測試
采用的Spark 3.0版本,delta是0.7版本進(jìn)行測試,首先是導(dǎo)入依賴:
io.delta delta-core_2.12 0.7.0
spark使用delta也很簡單,就如使用json,csv等數(shù)據(jù)格式一樣,只需要在format函數(shù)傳入delta字符串就可以了。比如創(chuàng)建一張表,scala的表達(dá)如下:
val data = spark.range(0, 5)data.write.format("delta").save("tmp/delta-table")
schema信息,他自己會(huì)從dataframe中推斷出來。
讀取一張表
spark.read.format("delta").load("tmp/delta-table").show()
delta lake的api對于spark來說基本是一致的,沒啥變動(dòng)。delta底層是完全基于spark的,而且可以支持實(shí)時(shí)和離線,對于多讀少更新,多批次更新的場景也是可以的。
以上就是如何進(jìn)行數(shù)據(jù)湖deltalake的分析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。