您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何進(jìn)行數(shù)據(jù)湖deltalake的分析,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
1.delta特性簡(jiǎn)介
Delta Lake是Spark計(jì)算框架和存儲(chǔ)系統(tǒng)之間帶有Schema信息數(shù)據(jù)的存儲(chǔ)中間層。它給Spark帶來(lái)了三個(gè)最主要的功能:
第一,Delta Lake使得Spark能支持?jǐn)?shù)據(jù)更新和刪除功能;
第二,Delta Lake使得Spark能支持事務(wù);
第三,支持?jǐn)?shù)據(jù)版本管理,運(yùn)行用戶(hù)查詢(xún)歷史數(shù)據(jù)快照。
ACID事務(wù):為數(shù)據(jù)湖提供ACID事務(wù),確保在多個(gè)數(shù)據(jù)管道并發(fā)讀寫(xiě)數(shù)據(jù)時(shí),數(shù)據(jù)能保持完整性。
數(shù)據(jù)版本管理和時(shí)間旅行:提供了數(shù)據(jù)快照,使開(kāi)發(fā)人員能夠訪問(wèn)和還原早期版本的數(shù)據(jù)以進(jìn)行審核、回滾或重現(xiàn)實(shí)驗(yàn)
可伸縮的元數(shù)據(jù)管理:存儲(chǔ)表或者文件的元數(shù)據(jù)信息,并且把元數(shù)據(jù)也作為數(shù)據(jù)處理,元數(shù)據(jù)與數(shù)據(jù)的對(duì)應(yīng)關(guān)系存放在事務(wù)日志中;
流和批統(tǒng)一處理:Delta中的表既有批量的,也有流式和sink的;
數(shù)據(jù)操作審計(jì):事務(wù)日志記錄對(duì)數(shù)據(jù)所做的每個(gè)更改的詳細(xì)信息,提供對(duì)更改的完整審計(jì)跟蹤;
Schema管理功能:提供自動(dòng)驗(yàn)證寫(xiě)入數(shù)據(jù)的Schema與表的Schema是否兼容的能力,并提供顯示增加列和自動(dòng)更新Schema的能力;
數(shù)據(jù)表操作(類(lèi)似于傳統(tǒng)數(shù)據(jù)庫(kù)的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 說(shuō)白了就是一個(gè)lib庫(kù)
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沒(méi)啥神秘的,和parquet沒(méi)有任何區(qū)別。但是他通過(guò)meta文件以及相應(yīng)的API,提供眾多特性功能的支持。在Spark中使用它和使用parquet的唯一區(qū)別就是把format parquet換成detla。
上圖可以看出,數(shù)據(jù)湖目的實(shí)一站式提供各種數(shù)據(jù)服務(wù)。
2.delta測(cè)試
采用的Spark 3.0版本,delta是0.7版本進(jìn)行測(cè)試,首先是導(dǎo)入依賴(lài):
<dependency> <groupId>io.delta</groupId> <artifactId>delta-core_2.12</artifactId> <version>0.7.0</version></dependency>
spark使用delta也很簡(jiǎn)單,就如使用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中推斷出來(lái)。
讀取一張表
spark.read.format("delta").load("tmp/delta-table").show()
delta lake的api對(duì)于spark來(lái)說(shuō)基本是一致的,沒(méi)啥變動(dòng)。delta底層是完全基于spark的,而且可以支持實(shí)時(shí)和離線,對(duì)于多讀少更新,多批次更新的場(chǎng)景也是可以的。
以上就是如何進(jìn)行數(shù)據(jù)湖deltalake的分析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。