跳到主要內容
工程的博客

你的湖屋的基礎始於三角洲湖

使用Delta Lake集成簡化數據可靠性和數據工程

2021年12月1日 工程的博客

分享這篇文章

過去幾年德爾塔湖項目令人興奮。Delta Lake 1.0的發布由邁克爾·阿姆布魯斯特宣布數據+人工智能峰會2021年5月對開源社區來說是一個偉大的裏程碑,我們才剛剛開始!為了更好地簡化社區參與和詢問,我們最近發布了Delta Lake 2021 H2路線圖和相關的三角洲湖泊用戶調查(2021 H2)-結果我們將在未來的博客中討論。在這篇博客中,我們回顧了目前發布的主要功能,並提供了即將到來的路線圖的概述。在Delta Lake 1.0中,多個Delta Lake集群可以對同一個表進行讀寫。

讓我們先從三角洲湖開始。三角洲湖開源項目是否能夠構建Lakehouse架構在您現有的存儲係統(如S3, ADLS, GCS和HDFS)之上。Delta Lake的特性提高了在雲存儲對象中處理數據的可管理性和性能,並支持lakehouse結合了數據倉庫和數據湖的主要特征的範例:用於低成本對象存儲的標準DBMS管理功能。與多跳Delta勳章架構數據質量框架一起,Delta Lake確保了您的批處理和ACID事務流數據的可靠性。

三角洲湖收養

今天,三角洲湖在世界各地使用。Delta Lake每天處理數以十億字節計的數據,占Databricks平台掃描數據的75%Beplay体育安卓版本獨自一人.此外,Delta Lake僅在Databricks上就已部署給3000多家客戶的生產湖屋架構!beplay体育app下载地址

三角洲湖的創新步伐凸顯

通往Delta Lake 1.0的旅程充滿了創新亮點——那麼我們是如何走到這一步的呢?

三角洲湖的創新步伐凸顯

正如Michael在他在2021年數據+人工智能峰會上的主題演講Delta Lake項目最初是在Databricks根據2017年的客戶反饋創建的。通過與早期采用者的持續合作,Delta Lake於2019年開源,並在大會上宣布Spark+AI峰會主題演講:Ali Ghodsi.第一個發布版Delta Lake 0.1包含ACID事務、模式管理以及統一的流和批處理源和接收器。0.4版本包含了對DML命令的支持,並添加了Scala和Python api的真空。在0.5版本中,Delta Lake在壓縮和並發性方麵得到了改進。可以隻使用SQL將Parquet表轉換為Delta Lake表。下一個版本0.6中增加的其他內容是對合並操作和描述曆史的改進,這允許您了解表是如何隨時間變化的。在0.7中,通過清單生成添加了對Presto和Athena等不同引擎的支持。最後,在0.8版本中添加了合並和其他特性,做了大量工作。

要更深入地了解這些創新,請查看下麵每個版本的博客。

Delta Lake 1.0

Delta Lake 1.0版本於2021年5月由社區認證,並在大會上宣布數據與人工智能峰會配備了一係列新功能,使三角洲湖隨處可見。

讓我們來看看1.0發行版中的每個特性。

發布的主要主題涵蓋了“宣布三角洲湖1.0”主題演講可分為以下幾種:

  • 生成的列
  • 多集群寫道
  • 雲獨立
  • Apache Spark™3.1支持
  • PyPI安裝
  • 三角洲無處不在
  • 連接器

生成的列

在使用分布式係統時,一個常見的問題是如何劃分數據以更好地組織數據以供攝入和查詢。一種常見的方法是按日期劃分數據,因為這允許您在新數據到達時自然地組織數據,以及按日期範圍查詢數據。

這種方法的問題是,大多數情況下,數據列是時間戳的形式;如果要按時間戳進行分區,則會導致分區過多。若要按日期(而不是按毫秒)進行分區,可以手動創建按插入計算的日期列。這個的創建派生列將要求您手動創建列和手動添加謂詞;這個過程很容易出錯,而且很容易被遺忘。

更好的解決辦法是創造生成的列,它們是一種特殊類型的列,其值是根據用戶指定的函數在Delta表中已經存在的其他列上自動生成的。當您使用已生成的列寫入表,並且沒有顯式地為它們提供值時,Delta Lake將自動計算這些值。例如,您可以從時間戳列自動生成一個日期列(用於按日期劃分表);對表的任何寫入都隻需要指定時間戳列的數據。

這是可以做到的使用標準SQL語法輕鬆支撐你的湖屋。

創建表格事件(id長整型數字eventTime時間戳始終生成eventDate作為(eventTime作為日期使用δ分區通過(eventDate)

雲獨立

開箱即用,Delta Lake一直與各種存儲係統一起工作——Hadoop HDFS、Amazon S3、Azure數據湖存儲(ADLS) Gen2——盡管集群以前是特定於一個存儲係統的。

使用Delta Lake 1.0和DelegatingLogStore,您可以擁有一個從不同存儲係統讀寫的集群。

現在有了Delta Lake 1.0和DelegatingLogStore在美國,您可以使用單個集群從不同的存儲係統讀取和寫入。這意味著您可以對存儲在多個雲中的數據進行聯合查詢,或者將其用於跨區域整合。與此同時,Delta社區一直在擴展對其他文件係統的支持,包括IBM Cloud和穀歌Cloud Storage (GCS)以及Oracle Cloud Infrastructure。如需更多資料,請參閱存儲配置。Delta Lake文檔

多集群交易

Delta Lake一直支持多個集群向單個表寫入數據——使用ACID事務協議協調更新,防止衝突。這已經在Hadoop HDFS、ADLS Gen2和現在的穀歌雲存儲上工作。AWS S3缺少在不依賴外部係統的情況下構建此功能所需的事務原語。

在Delta Lake 1.0中,多個Delta Lake集群可以對同一個表進行讀寫。

現在,在Delta Lake 1.0中,來自Scribd和Samba TV的開源貢獻者在Delta事務協議中添加了使用Amazon DynamoDB在Amazon S3端點的多個編寫者之間進行協調的支持。現在,多個Delta Lake集群可以對同一個表進行讀寫。

Delta獨立閱讀器

之前Delta Lake基本上是一個Apache Spark項目——它與流和批處理api進行了很好的集成,可以從Delta表中讀寫。雖然Apache Spark與Delta無縫集成,但還有很多不同的引擎,您可能有各種各樣的原因想要使用它們。

Delta獨立閱讀器,我們為JVM創建了一個實現,它理解Delta事務協議,但不依賴於Apache Spark集群。這使得構建對其他引擎的支持變得非常容易。我們已經在Hive連接器上使用了Delta Standalone閱讀器,並且正在進行Presto連接器的工作。

Delta Lake Rust實施

Delta Rust實現支持寫事務(盡管在其他語言中尚未實現)。

Delta Lake 1.0的Rust實現支持寫事務(盡管還沒有在其他語言中實現)。

現在我們已經得到了Python的支持,重要的是讓Python用戶更容易上手。有兩個不同的包,這取決於你將如何從Python中使用Delta Lake:

  1. 如果您想將它與Apache Spark一起使用,也可以PIP安裝delta-spark,它將為您設置針對Delta Lake運行Apache Spark作業所需的一切
  2. 如果您要處理較小的數據,請使用pandas或其他庫;您不再需要使用Apache Spark從Python訪問Delta表。用戶可以使用PIP安裝deltalake命令安裝帶有Python綁定的Delta Rust API。

Delta Lake 1.0支持Apache Spark 3.1

Apache Spark社區在性能和兼容性方麵做了大量改進。德爾塔湖跟上這一創新是非常重要的。

這意味著您可以利用Apache Spark 3.1中提供的謂詞下推和修剪方麵的性能提升。此外,Delta Lake與Apache Spark流目錄api的集成確保了可用於流的Delta表出現在目錄中,而無需手動處理路徑元數據。

Spark 3.1支持

到處都是三角洲湖

在介紹了上麵介紹的所有特性之後,現在您可以在任何地方使用Delta。這個項目已經走了很長一段路,這就是三角洲生態係統現在的樣子。

隨著Delta Lake 1.0的發布,生態係統得到了顯著的擴展,使得Delta可以在任何想要使用它的地方使用。

  • 語言:使用Delta Lake的本機代碼可以輕鬆使用來自各種語言的數據。Delta Lake現在使用Rust綁定支持Python、Kafka和Ruby。
  • 服務:Delta Lake提供多種服務,包括Databricks、Azure Synapse Analytics、穀歌DataProc、Confluent Cloud和Oracle。
  • 連接器:由於對Delta Lake(獨立閱讀器)的本地支持,為數據工程師提供了所有流行工具的連接器,通過它可以輕鬆地從許多不同的數據庫查詢數據,而不需要任何清單文件。
  • 數據庫:Delta Lake也可以從許多不同的數據庫查詢。您可以從Apache Spark和其他數據庫係統訪問Delta表。

Delta Lake OSS:2021 H2路線圖

以下是不斷擴大的三角洲湖生態係統的一些亮點。有關更多信息,請參閱2021年三角洲湖路線圖H2:維尼和丹尼的功能概述

以下是目前三角洲湖生態係統路線圖的一些關鍵亮點。

三角洲獨立

路線圖中我們要強調的第一件事是Delta Standalone。

Delta Standalone Writer (dsw# 85)將允許開發人員在沒有Spark的情況下寫入Delta表。它還允許開發人員構建連接器,以便其他流引擎(如Flink、Kafka和Pulsar)也可以寫入Delta表。

在Delta Lake 1.0概述中,我們介紹了Delta獨立閱讀器它允許其他引擎直接從Delta Lake讀取,而不依賴於Apache Spark集群。考慮到對寫入功能的需求,Delta Standalone Writer自然而然地成為了下一步。因此,構建Delta Standalone Writer (DSW)的工作正在進行# 85),允許開發人員在沒有Apache Spark的情況下寫入Delta表。它允許開發人員構建連接器,以便其他流引擎(如Flink、Kafka和Pulsar)可以寫入Delta表。有關更多信息,請參閱[2021-09-13] Delta獨立寫入器設計文檔

Flink /δ水槽

Apache Flink是一個框架和分布式處理引擎,用於在無界和有界數據流上進行有狀態計算。由Flink支持的最常見的應用程序類型是事件驅動、數據分析和數據管道應用程序。目前,社區正在研究Flink/Delta Sink (# 111)使用即將推出的Delta Standalone Writer允許Flink寫入Delta表。

如果你感興趣,你可以參加slack #上的積極討論flink-delta-connector或者每周二舉行兩周一次的會議。

脈衝星/δ連接器

Pulsar是一個開源流媒體項目,最初由Yahoo!作為一個流媒體平台。Beplay体育安卓版本Delta社區正在為Delta獨立閱讀器帶來流媒體增強功能,以支持Pulsar。目前正在處理兩個連接器——一個用於從Delta表讀取數據作為源,另一個用於將數據寫入Delta表作為接收器(# 112).這是一個社區的努力,有一個活躍的slack小組,你可以通過Delta Users slack #加入connector-pulsar引導或參與每兩周一次的活動。欲了解更多信息,請查看最近的脈衝星歐盟峰會在哪裏瑞安朱而且艾迪生海厄姆都是主講人。

湖屋阿帕奇脈衝星

Trino /δ連接器

Trino是一個ANSI SQL兼容的查詢引擎,可以使用BI工具,如R, Tableau, Power BI, Superset等。社區正在利用Delta Standalone reader開發Trino/Delta reader。這是社區的努力,歡迎所有人參與。通過Delta用戶Slack頻道加入我們# trino我們將在每周四舉行雙周例會。

PrestoDB /δ連接器

Presto是一個開源的分布式SQL查詢引擎,用於運行交互式分析查詢
Presto Delta reader將允許Presto從Delta表中讀取。這是一個社區的努力,你可以加入其中# connector-presto.我們每周四也有兩周一次的會議。

Kafka-delta-ingest

Delta -rs是一個庫,提供對Rust中Delta表的低級訪問,目前支持Python、Kafka和Ruby綁定。Rust實現支持寫事務,kafka-delta-ingest項目最近投入生產,如以下技術談話所述:深入探討Delta-rs: kafka-delta-ingest

你也可以通過加入slack來參與討論# kafka-delta-ingest或每兩周一次的會議。

Hive 3連接器

Hive to delta連接器是一個庫,用於使Hive讀取delta Lake表。我們正在更新現有的Hive 2連接器,就像Delta Standalone Reader支持Hive 3一樣。要參與,你可以加入三角洲鬆弛頻道或參加我們每月的核心達美辦公時間。

火花的增強

我們在Apache Spark中看到了巨大的創新速度,因此,我們的路線圖中出現了兩件主要的事情。

  • 支持Apache Spark的列刪除和重命名命令
  • 支持Apache Spark 3.2

三角洲分享

三角洲湖的另一個強大特征是三角洲分享.在組織內部與外部實體共享數據的需求日益增長。用戶對如何共享數據的限製感到沮喪,一旦共享了數據,版本控製和數據新鮮度就很難維護。例如,以一組合作的數據科學家為例。他們處於流程中,處於洞察的邊緣,但需要分析另一個數據集。所以他們提交一張票,然後等待。在兩周或更長時間內,他們需要獲得丟失的數據集,時間會損失,條件會改變,勢頭會停滯。數據共享不應該成為創新的障礙。這就是我們興奮的原因三角洲分享,這是業界首個用於安全數據共享的開放協議,使得與其他組織共享數據變得簡單,無論他們使用哪種計算平台。Beplay体育安卓版本

Delta Sharing使用開放格式允許外部程序和客戶端訪問數據,因此不僅可以共享數據,還可以將機器學習模型作為資產共享。

Delta Sharing允許您:

  • 直接共享實時數據:輕鬆共享您的Delta Lake中現有的實時數據,而無需將其複製到另一個係統。
  • 支持不同的客戶:數據接收者可以直接從Pandas、Apache Spark™、Rust和其他係統連接到Delta Shares,而無需首先部署特定的計算平台。Beplay体育安卓版本減少將數據傳遞給用戶的阻力。
  • 安全和治理: Delta Sharing允許您輕鬆地管理、跟蹤和審計對共享數據集的訪問。
  • 可伸縮性:利用S3、ADLS和GCS等雲存儲係統,可靠、高效地共享tb級數據集。

三角洲湖委員會

由於Delta Lake項目是由社區驅動的,因此我們想要突出來自許多不同公司的一群新的Delta Lake提交者。我們特別要強調的是QP侯泰勒·克羅伊基督教威廉姆斯,正式Osypov來自Scribd和Florian Valeye從後市場到三角洲。rs, kafka-delta-ingest, sql-delta-import,以及Delta社區。

新德爾塔湖提交者。

概括地說,三角洲湖路線圖

綜上所述,我們回顧了Delta Lake社區是如何從連接器迅速擴展到提交者的。要了解更多關於三角洲湖的信息,請查看三角洲湖權威指南這是一本奧萊利的新書,可在Early Release中免費獲得。

2021年下半年三角洲湖生態係統擴張

如何參與三角洲湖項目

我們鼓勵你通過鬆弛穀歌組GitHub,以及更多。

如何參與三角洲湖項目。

我們最近關閉了三角洲湖泊調查收到超過600份回複。我們將分析和公布調查結果,以幫助指導三角洲湖社區。對於那些想要提供反饋的人,請加入眾多的Delta社區論壇。

對於那些完成調查的人,你將收到Delta swag,並有機會贏得即將到來的硬拷貝三角洲湖權威指南道明丹尼,Vini(你可以下載原始的,未經編輯的早期預覽現在)!

三角洲湖:權威指南。
早期發布的Delta Lake:權威指南

在此,我們想引用一段話來結束這篇博客泰勒·克羅伊Scribd平台工程總監:Beplay体育安卓版本

“有了Delta Lake 1.0, Delta Lake現在可以滿足各種工作負載!

免費試用Databricks

相關的帖子

看到所有工程的博客的帖子
Baidu
map