跳轉到主要內容
工程的博客

使火花SQL DDL和DML三角洲湖在Apache 3.0火花

三角洲湖0.7.0是第一個發布在Apache 3.0火花並添加支持metastore-defined表和SQL DDL
分享這篇文章

得到的早期預覽O ' reilly的新電子書一步一步的指導你需要開始使用三角洲湖。


上周,我們有一個樂趣三角洲湖0.7.0 + Apache 3.0 AMA火花哪裏Burak•、如來佛Das和丹尼李提供了一個回顧的三角洲湖0.7.0和回答你的三角洲湖的問題。這個AMA釋放的主題三角洲湖0.7.0恰逢釋放Apache 3.0火花從而使一組新的特性,簡化使用三角洲湖從SQL。

三角洲湖0.7.0 + Apache火花3.0 AMA Burak•,如來佛Das,丹尼李提供了一個回顧的三角洲湖0.7.0和三角洲湖回答問題。

回顧δ0.7.0湖

這裏有一些關鍵的三角洲湖0.7.0 AMA的翻身;指的是發布說明為更多的信息。

支持SQL DDL命令定義蜂巢metastore中的表

現在,您可以定義三角洲表蜂巢metastore並使用所有SQL操作的表名在創建表(或更換)。

——在metastore創建表創建事件(日期日期,eventId字符串,eventType字符串,數據的字符串)使用δ分區通過(日期)位置“/δ/事件”——如果一個表具有相同名稱已經存在,表替換配置,其他的創建創建取代事件(日期日期,eventId字符串,eventType字符串,數據的字符串)使用δ分區通過(日期)位置“/δ/事件”
——修改表和模式改變table_name添加列(col_name data_type(評論col_comment)(第一個|colA_name)後,…)

您還可以使用Scala / Java / Python api:

  • DataFrame.saveAsTable(表)DataFrameWriterV2api (# 307)。
  • DeltaTable.forName(表)API創建的實例io.delta.tables.DeltaTable這是用於執行更新/刪除/合並操作在Scala中/ Java / Python。

支持SQL插入、刪除、更新和合並

通過我們的最常見的問題之一三角洲湖科技談判時將DML操作,如刪除、更新,並在火花SQL合並可用嗎?等,這些操作可以在SQL !下麵的例子你可以寫刪除、更新和合並(插入、更新、刪除和重複數據刪除操作使用火花SQL

——使用append模式,可以自動將新數據添加到現有δ表插入事件選擇*newEvents——自動替換表中所有的數據,您可以使用覆蓋模式插入覆蓋事件選擇*newEvents
              ——刪除事件刪除事件在哪裏日期值得注意的是,合並操作比標準ANSI三角洲湖支持更高級的語法SQL語法。的例子,合並支持
  • 刪除操作,刪除目標目錄,當源行匹配。例如,“……當匹配然後刪除……”
  • 多個匹配操作條款條件-更大的靈活性,當目標和源行匹配。例如,
匹配events.shouldDelete然後刪除匹配然後更新events.data=updates.data
  • 星語法-速記設置目標列值的列名稱類似的來源。例如,
匹配然後*匹配然後插入*——相當於更新/插入事件。日期= updates.date,events.eventId=更新。eventId, event.data=updates.data

指的是三角洲湖文檔為更多的信息。

自動生成和增量轉眼間/雅典娜清單

正如查詢從轉眼間三角洲湖表和雅典娜,改進操作並發性,和合並的性能三角洲湖支持其他處理引擎閱讀三角洲湖通過使用清單文件;manifest文件包含最新版本的列表清單生成的文件。如前麵所述的博客,你將需要:

  • 生成三角洲湖清單文件
  • 配置轉眼間或雅典娜閱讀生成的體現
  • 手動重新生成manifest文件(更新)

新為三角洲湖0.7.0自動更新清單文件的能力與以下命令。

改變delta. pathToDeltaTable”TBLPROPERTIES (delta.compatibility.symlinkFormatManifest.enabled=真正的)

有關更多信息,請參考三角洲湖文檔

通過表屬性配置表

能夠設置表屬性表上使用ALTER table TBLPROPERTIES集,您可以啟用,禁用或配置自動清單生成等三角洲的許多特征。例如,使用表屬性,你可以阻止刪除和更新在三角洲表使用delta.appendOnly = true

你也可以輕易控製三角洲湖表的曆史保留由以下屬性:

  • delta.logRetentionDuration:控製多長時間的曆史表(即事務日誌曆史)。默認情況下,三十(30)天的曆史保存但你可能想要改變這個值根據您的需求(例如GDPR曆史背景)
  • delta.deletedFileRetentionDuration:控製多久以前文件必須被刪除之前的候選人真空。默認情況下,數據七(7)天以上文件刪除。

δ0.7.0湖,您可以使用ALTER TABLE TBLPROPERTIES配置設置這些屬性。

改變delta. pathToDeltaTable”TBLPROPERTIES (delta.logRetentionDuration=“間隔”delta.deletedFileRetentionDuration=“間隔”)

有關更多信息,請參考表屬性在三角洲湖文檔。

支持增量表中添加用戶定義元數據提交

您可以指定用戶定義的字符串作為元數據在提交由三角洲表操作,或者使用DataFrameWriter選項userMetadata SparkSession配置spark.databricks.delta.commitInfo.userMetadata(文檔)。

在下麵的例子中,我們在刪除用戶從我們的數據(1 xsdf1)湖每個用戶請求。以確保我們把用戶的請求和刪除,我們還添加了刪除userMetadata請求ID。

spark.databricks.delta.commitInfo.userMetadata={“GDPR”:“刪除請求1 x891jb23”};刪除user_table在哪裏user_id=“1 xsdf1”

當回顧曆史用戶表的操作(user_table),您可以很容易地識別相關的事務日誌中刪除請求。
使用磚AWD數據湖實現統一的分析平台。Beplay体育安卓版本

其他亮點

其他突出三角洲湖0.7.0釋放包括:

  • Azure支持數據存儲Gen2湖——火花3.0支持Hadoop 3.2庫使得Azure支持數據存儲Gen2湖(文檔)。
  • 改進支持流媒體一次性觸發火花3.0,現在我們保證一次觸發(Trigger.Once)處理所有傑出的三角洲表中的數據在一個micro-batch即使利率限製設置與maxFilesPerTrigger DataStreamReader選項。

有很多重大問題在美國關於結構化流和使用trigger.once。更多的信息,一些好的資源解釋這個概念包括:

現在的問題!

我們有很多的問題在我們AMA;下麵是一個快速簡介的這些問題。

δ表可以創建在AWS膠水目錄服務嗎?

是的,你可以把你的三角洲湖表與AWS膠數據目錄服務。這個博客改變你的AWS數據使用磚三角洲和湖AWS膠數據目錄服務提供了一個很好的指南。

使用磚AWD數據湖實現統一的分析平台。Beplay体育安卓版本

重要的是要注意,並不是所有的三角洲湖元數據信息存儲在膠對於更多細節,你仍然會想直接讀三角洲湖事務日誌。

我們可以查詢三角洲湖元數據嗎?集群需要住訪問metastore ?

如上所述在前麵的問題,有輕微區別三角洲湖元數據與蜂巢或膠水metastores。後者metastores作為目錄讓任何兼容的框架確定哪些表可用來查詢。

而三角洲湖元數據包含這些信息,它還包含很多其他信息可能不是重要metastore目錄包括表的當前模式,哪些文件相關聯的事務,操作指標,等查詢元數據,您可以使用SQL或火花DataFrame api查詢三角洲湖事務日誌。有關更多信息,請參考三角洲湖內部網絡技術會談深入研究這些內部以及提供筆記本電腦,這樣你就可以查詢自己的元數據。

我們還需要定義表在雅典娜/轉眼間使用符號鏈接或我們可以使用新的SQL方法定義三角洲通過膠水目錄表嗎?

如前所述,第一個步驟來定義一個雅典娜/轉眼間表生成體現三角洲表使用Apache的火花。這個任務將生成一組文件——即包含哪些文件的清單——雅典娜或很快將讀取時觀察數據的最新的目錄。第二步是配置雅典娜/趕快去讀那些生成的體現。因此,在這個時候,你仍然需要創建synlinks雅典娜/很快將能夠識別哪些文件需要閱讀。

注意,SQL方法定義三角洲表定義了表和模式的存在,但沒有指定哪些文件雅典娜/轉眼間應該閱讀(即讀這個最新拚花的快照文件的當前版本的表)。如表版本三角洲湖可以經常改變(例如結構化流附加數據,運行多個批次ForeachBatch語句更新表,等等),它將很有可能過載任何metastore不斷更新最新的元數據文件。

的更新、刪除、合並立即寫出新的鑲花文件或使用其他技巧在存儲層來減少I / O ?

正如三角洲湖內部網絡技術會談任何變化,底層文件係統是否更新,刪除或合並的結果除了的新文件。三角洲湖每次寫入新文件,這個過程並不像存儲I / O密集型(例如)傳統的刪除,要求I / O讀取文件,刪除被刪除的行,並覆蓋原來的文件。此外,由於三角洲湖使用事務日誌來識別哪些文件相關的數據版本,讀起來不那麼存儲I / O密集型。而不是清單從分布式存儲的所有文件可以I / O密集型,耗費時間,或者兩者兼有,通過事務日誌三角洲湖可以自動獲得必要的文件。此外,刪除分區執行邊界看成是純元數據操作,因此非常快。

在我們的環境中,定期更新發生作為單獨的進程和ETL銅表上發生。是否有可能為這些過程利用緩存來提高性能。

對於那些可能不熟悉銅表,這個問題是在引用三角洲圖案架構框架數據質量。我們開始的消防水帶事件寫入存儲盡可能快的數據攝入過程數據的土地在這些攝入或青銅表。當你精煉數據(連接、查找、過濾等)創建銀表。最後,你有ML的特性和/或總表(s) -也被稱為黃金表來執行你的分析。在三角洲體係結構的更多信息,請參閱超越λ:引入三角洲體係結構與三角洲湖Productionizing機器學習

三角洲湖大獎章架構框架數據質量。

這種類型的結構,提取轉換加載(ETL)流程的一部分,提取的數據存儲在你的青銅表作為數據攝入。數據的轉換(包括更新)會發生當從青銅白銀導致你高尚的表。

在緩存方麵,有兩種類型的緩存可能進入遊戲。Apache有火花緩存以及三角洲引擎緩存特定於磚。使用Apache火花緩存通過.cache和/或.persist允許你保持數據內存從而最小化存儲I / O。這可以為種管道創建中間表時特別有用,多個下遊表是基於一組中間表創建的。您還可以利用三角洲引擎緩存(可以與Apache引發串聯使用緩存),因為它包含本地副本的遠程數據從而可以讀取和操作速度比僅僅使用Apache火花緩存數據。在這種情況下,你可能會受益於物化DataFrames不僅利用三角洲引擎緩存但是處理故障恢複和簡化故障診斷為你種的數據管道。

使用與三角洲中間跳表的好處,特別是在涉及大量的轉換。

在中間跳的更多信息,請參閱超越λ:引入三角洲體係結構。更多信息在三角洲引擎和Apache火花緩存,請參考優化性能和緩存

我們可以使用三角洲湖在表更新頻繁的場景中,每五分鍾說。基本上我們有表存儲在一個在線係統,希望創建一個離線係統使用和更新湖δ表每五分鍾。有什麼性能和成本的影響,這是我們可以考慮使用δ?

三角洲湖可以源和彙你的批處理和流過程。經常更新的表,您可以定期運行批處理查詢每5分鍾或另一種方法是使用Trigger.once(正如上一節所提到的)。在性能和成本的影響,下麵是一個偉大的幻燈片,包括成本和延遲權衡這些方法。

成本和性能考慮的場景中使用增量表更新表每隔幾分鍾。

為了深入了解這個問題,請參閱技術說話超越λ:引入三角洲體係結構。快速呼叫頻繁批次(無論是批量或流):

  • 經常當添加數據,這可能會導致很多小文件。一個最佳實踐是周期性的緊湊的文件。如果你使用磚,你也可以使用自動最優化自動化這一任務。
  • 使用ForeachBatch來修改現有的數據可能會導致很多事務和版本的數據。可能需要更積極地清理日誌條目和/或吸塵減少尺寸。
另一個很好的參考VLDB 2020年的論文:三角洲湖:高性能酸表存儲在雲存儲對象

的性能影響現場查詢,當真空在進展嗎?

應該有最低限度的生活沒有影響查詢作為真空通常是運行在一組不同的文件的數據比你的查詢。哪裏有潛在影響是如果你做時間旅行查詢你要真空的相同的數據(例如運行真空的默認7天,同時試圖查詢7天以上的數據)。

有關時間旅行,如果拚花10提交後創建的元數據文件,這是否意味著我可以回去隻有10提交嗎?或無視拚花時間旅行查詢元數據文件?

你可以追溯到δ定義的事務日誌。logRetentionDuration默認是30天的曆史。默認情況下,你可以看到曆史的30天內事務日誌。請注意,有30天日誌曆史上,當運行真空(需要手動啟動,它不會自動運行)默認情況下數據文件刪除7天以上。

在創建拚花元數據文件的情況下,每個三角洲湖事務將首先記錄事務日誌的JSON文件。每隔10日交易,拚花生成元數據文件存儲前一個事務日誌條目來提高性能。因此,如果一個新的集群需要閱讀所有的事務日誌條目,它隻需要拚花文件和最近的(9)JSON文件

處理大量的元數據。如何使用Apache引發規模δ表數以百萬計的文件。

有關更多信息,請參閱深入三角洲湖:開箱事務日誌

開始使用δ0.7.0湖

嚐試三角洲湖與前麵的代碼片段在Apache火花3.0.0(或更大)的實例。湖泊三角洲湖使您的數據更可靠(不管你創建一個新的或現有的數據遷移湖)。要了解更多,請參考https://delta.io/,並加入三角洲湖社區通過鬆弛穀歌集團。你可以跟蹤所有的即將推出,計劃特性GitHub的裏程碑。你也可以嚐試管理三角洲湖在磚免費帳戶。

學分

我們想要感謝下列貢獻者更新,doc變化,和貢獻在三角洲湖0.7.0:艾倫·金,亞曆克斯·奧特Burak•,何塞•托雷斯Pranav Anand, QP侯,拉胡爾從詼諧,羅布·凱利Shixiong竺Subhash Burramsetty,如來佛Das,韋斯利·霍夫曼,陰淮河,Youngbin金姆,紮克時間,埃裏克•張(Herman van Hovell Mahmoud救世主。

O ' reilly學習引發的書

免費第二版包括更新火花章節3.0和火花的SQL和數據湖泊。

免費試著磚

相關的帖子

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