如何使用 Delta Lake 輕松構(gòu)建可靠的大規(guī)模數(shù)據(jù)湖泊

本文翻譯自 Databricks 官方博客

我們很高興地宣布將 Delta Lake 項(xiàng)目開源。 Delta Lake 是一個(gè)存儲(chǔ)層丧枪,通過在寫入和快照隔離之間提供樂觀并發(fā)控制實(shí)現(xiàn) ACID 事務(wù),保證了在寫入期間讀取的一致性运挫,從而為構(gòu)建在 HDFS 和云存儲(chǔ)上的數(shù)據(jù)湖泊帶來可靠性保障旗们。 Delta Lake 還提供內(nèi)置數(shù)據(jù)版本控制,以便輕松回滾和復(fù)制報(bào)告蔓涧。該項(xiàng)目可在 delta.io 下載件已。該項(xiàng)目使用 Apache License 2.0 協(xié)議。

delta-lake.png

數(shù)據(jù)湖泊面臨的挑戰(zhàn)

數(shù)據(jù)湖泊是現(xiàn)代數(shù)據(jù)架構(gòu)中的常見元素元暴。企業(yè)在不斷進(jìn)行收集和挖掘海量數(shù)據(jù)時(shí)篷扩,數(shù)據(jù)湖泊可以作為中央存儲(chǔ)。然而茉盏,雖然目前的數(shù)據(jù)湖泊在數(shù)據(jù)治理方面邁出了一大步瞻惋,但它們遇到了以下常見問題:

  1. 讀取和寫入數(shù)據(jù)湖泊是不可靠的厦滤。數(shù)據(jù)工程師經(jīng)常遇到不安全寫入數(shù)據(jù)湖并導(dǎo)致讀者在寫入期間看到垃圾數(shù)據(jù)的問題。他們必須構(gòu)建變通方法以確保讀者在寫入期間始終看到一致的數(shù)據(jù)歼狼。
  2. 數(shù)據(jù)湖泊中的數(shù)據(jù)質(zhì)量很低掏导。將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)湖泊中很容易,但這是以數(shù)據(jù)質(zhì)量為代價(jià)的羽峰。沒有任何驗(yàn)證 Schema 和數(shù)據(jù)的機(jī)制的話趟咆,數(shù)據(jù)湖泊的數(shù)據(jù)質(zhì)量將會(huì)變得很差,以至于努力挖掘這些數(shù)據(jù)的分析項(xiàng)目也會(huì)失敗梅屉。
  3. 隨著數(shù)據(jù)量的增加值纱,性能越來越差。隨著轉(zhuǎn)儲(chǔ)到數(shù)據(jù)湖泊中的數(shù)據(jù)量的增加坯汤,文件和目錄的數(shù)量也會(huì)增加虐唠。處理數(shù)據(jù)的大數(shù)據(jù)作業(yè)和查詢引擎在處理元數(shù)據(jù)操作上就會(huì)花費(fèi)大量時(shí)間;在執(zhí)行流式作業(yè)時(shí)惰聂,這個(gè)問題會(huì)更加明顯疆偿。
  4. 更新數(shù)據(jù)湖泊中的記錄很難。工程師需要構(gòu)建復(fù)雜的處理作業(yè)來讀取整個(gè)分區(qū)或表搓幌,修改數(shù)據(jù)并將其寫回杆故,這種作業(yè)效率低且難以維護(hù)。
    由于存在這些挑戰(zhàn)溉愁,許多大數(shù)據(jù)項(xiàng)目無(wú)法實(shí)現(xiàn)其愿景处铛,有時(shí)甚至?xí)耆 N覀冃枰环N解決方案拐揭,使數(shù)據(jù)從業(yè)者在能夠利用他們現(xiàn)有的數(shù)據(jù)湖泊的同時(shí)確保數(shù)據(jù)質(zhì)量撤蟆。

Delta Lake 開源項(xiàng)目介紹

Delta Lake 解決了上述問題,能簡(jiǎn)化您構(gòu)建數(shù)據(jù)湖泊的方式堂污。它提供以下主要功能:

  • ACID 事務(wù):Delta Lake 提供多次寫入之間的 ACID 事務(wù)家肯。每次寫入都是一個(gè)事務(wù),并且在事務(wù)日志中順序記錄了寫入的序列敷鸦。事務(wù)日志跟蹤文件級(jí)別的寫入并使用樂觀并發(fā)控制息楔,這非常適合數(shù)據(jù)湖泊,因?yàn)椴粫?huì)經(jīng)常發(fā)生多個(gè)寫入嘗試修改相同的文件的情況扒披。在存在沖突的情況下值依,Delta Lake 會(huì)拋出并發(fā)修改異常以遍用戶處理并重試其作業(yè)。 Delta Lake 還提供強(qiáng)大的可序列化隔離級(jí)別碟案,允許工程師持續(xù)寫入一個(gè)目錄或表愿险,并允許消費(fèi)者持續(xù)從同一目錄或表中進(jìn)行讀取。讀取者將會(huì)看到開始讀取時(shí)存在的最新快照。
  • Schema 管理:Delta Lake 自動(dòng)驗(yàn)證正在寫入的 DataFrame 的 Schema 是否與表的 Schema 兼容辆亏。表中存在但不在 DataFrame 中的列設(shè)置為 null风秤。如果 DataFrame 中有 Schema 中沒有定義的列,則此操作會(huì)引發(fā)異常扮叨。 Delta Lake 具有顯式添加新列的 DDL 以及自動(dòng)更新 Schema 的能力缤弦。
  • 可擴(kuò)展的元數(shù)據(jù)處理:Delta Lake 將表或目錄的元數(shù)據(jù)信息存儲(chǔ)在事務(wù)日志中,而不是 Metastore 中彻磁,這允許Delta Lake在恒定時(shí)間內(nèi)列出大型目錄中的文件碍沐,并在讀取數(shù)據(jù)時(shí)更高效。
  • 數(shù)據(jù)版本控制和時(shí)間旅行:Delta Lake 允許用戶讀取表或目錄的歷史快照衷蜓。在寫入或者修改文件時(shí)累提,Delta Lake會(huì)創(chuàng)建較新版本的文件并保留舊版本。當(dāng)用戶想要讀取舊版本的表或目錄時(shí)磁浇,他們可以為 Apache Spark 的讀取 API 提供時(shí)間戳或版本號(hào)斋陪,Delta Lake 根據(jù)事務(wù)日志中的信息構(gòu)建該時(shí)間戳或版本的完整快照。這允許用戶重現(xiàn)實(shí)驗(yàn)和報(bào)告置吓,并在需要時(shí)將表還原為舊版本无虚。
  • 統(tǒng)一批處理和流式處理:除了批量寫入,Delta Lake 還可以用作 Apache Spark Structured Streaming 的高效流式接收器交洗。結(jié)合 ACID 事務(wù)和可擴(kuò)展的元數(shù)據(jù)處理骑科,高效的流式傳輸接收器現(xiàn)在可以實(shí)現(xiàn)大量近實(shí)時(shí)分析用例橡淑,而無(wú)需維護(hù)復(fù)雜的流式傳輸和批處理管道构拳。
  • 記錄更新和刪除(即將發(fā)布):Delta Lake 提供合并、更新和刪除這些 DML 命令梁棠。這允許工程師很方便的對(duì)數(shù)據(jù)進(jìn)行修改和刪除置森,簡(jiǎn)化數(shù)據(jù)變更捕獲以及 GDPR。因?yàn)?Delta Lake 按文件粒度跟蹤數(shù)據(jù)變更符糊,所以比一次處理所有分區(qū)或表要高效的多凫海。
  • 數(shù)據(jù)期望(即將推出):Delta Lake 還將支持新的 API 來設(shè)置表或目錄的數(shù)據(jù)期望。工程師將能夠指定布爾條件并調(diào)整嚴(yán)重程度以處理數(shù)據(jù)期望男娄。當(dāng) Apache Spark 作業(yè)寫入表或目錄時(shí)行贪,Delta Lake 將自動(dòng)驗(yàn)證記錄,當(dāng)存在違規(guī)時(shí)模闲,它將根據(jù)提供的嚴(yán)重程度配置對(duì)記錄進(jìn)行處理建瘫。

結(jié)論

Apache Spark 在大數(shù)據(jù)處理領(lǐng)域進(jìn)行了變革,并允許工程師構(gòu)建高效的數(shù)據(jù)管道尸折。但是啰脚,我們發(fā)現(xiàn)工程師在如何管理存儲(chǔ)層(內(nèi)部部署和云端)方面存在重大差距。他們不得不通過變通方法構(gòu)建復(fù)雜的數(shù)據(jù)管道來向消費(fèi)者提供數(shù)據(jù)实夹。隨著 Delta Lake 的出現(xiàn)橄浓,我們看到 Databricks 的客戶可以毫不費(fèi)力地建立可靠的數(shù)據(jù)湖泊×C危現(xiàn)在我們正在為更廣泛的社區(qū)開放 Delta Lake 項(xiàng)目,以便讓社區(qū)獲益荸实。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匀们,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子准给,更是在濱河造成了極大的恐慌昼蛀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圆存,死亡現(xiàn)場(chǎng)離奇詭異叼旋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沦辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門夫植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人油讯,你說我怎么就攤上這事详民。” “怎么了陌兑?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵沈跨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我兔综,道長(zhǎng)饿凛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任软驰,我火速辦了婚禮涧窒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锭亏。我一直安慰自己纠吴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布慧瘤。 她就那樣靜靜地躺著戴已,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锅减。 梳的紋絲不亂的頭發(fā)上糖儡,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音上煤,去河邊找鬼休玩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拴疤。 我是一名探鬼主播永部,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼呐矾!你這毒婦竟也來了苔埋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜒犯,失蹤者是張志新(化名)和其女友劉穎组橄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罚随,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玉工,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淘菩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遵班。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖潮改,靈堂內(nèi)的尸體忽然破棺而出狭郑,到底是詐尸還是另有隱情,我是刑警寧澤汇在,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布翰萨,位于F島的核電站,受9級(jí)特大地震影響糕殉,放射性物質(zhì)發(fā)生泄漏亩鬼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一糙麦、第九天 我趴在偏房一處隱蔽的房頂上張望辛孵。 院中可真熱鬧丛肮,春花似錦赡磅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至习劫,卻和暖如春咆瘟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诽里。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工袒餐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓灸眼,卻偏偏與公主長(zhǎng)得像卧檐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子焰宣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345