通用格式(製服)冰山兼容三角洲表

預覽

這個特性是在公共預覽在磚運行時13.2及以上。

三角洲通用格式(製服)允許您閱讀三角洲與冰山讀者客戶表。

統一利用兩個三角洲湖和冰山由拚花數據文件和元數據層。異步統一元數據自動生成冰山,沒有重寫數據,這冰山客戶可以閱讀δ表就像冰山表。一個副本提供兩種格式的數據文件。

您可以配置一個外部連接統一目錄作為一座冰山目錄。看到閱讀使用統一編目冰山編目端點

請注意

統一的元數據生成異步運行的計算用於寫入數據增量表,這可能會增加司機資源使用情況。

需求

使製服,你必須滿足以下要求:

使三角洲製服

重要的

啟用統一設置δ表功能IcebergCompatV1,寫協議的特性。隻有客戶支持這個表特性可以寫UniForm-enabled表。您必須使用磚運行時13.2或以上寫的三角洲表啟用了這個功能。

你可以關掉統一通過取消delta.universalFormat.enabledFormats表屬性。你不能關掉列映射後啟用,和升級三角洲湖讀者和作家協議版本無法回複。

下表屬性使統一支持冰山。冰山是唯一的有效值。

“delta.universalFormat.enabledFormats”=“冰山”

您還必須啟用列映射IcebergCompatV1使用統一的。這些設置自動如果你啟用統一的表創建期間,像下麵的例子:

創建T(c1INT)TBLPROPERTIES(“delta.universalFormat.enabledFormats”=“冰山”);

如果你與cta語句創建一個新表,您必須手動指定列映射,如以下示例:

創建TTBLPROPERTIES(“delta.columnMapping.mode”=“名字”,“delta.universalFormat.enabledFormats”=“冰山”)作為選擇*source_table;

如果你改變一個現有表,你必須指定這些屬性,如以下示例:

改變TTBLPROPERTIES(“delta.columnMapping.mode”=“名字”,“delta.enableIcebergCompatV1”=“真正的”,“delta.universalFormat.enabledFormats”=“冰山”);

當你第一次啟用統一的、異步的元數據代開始。這個任務之前必須完成外部客戶可以使用冰山查詢的表。看到檢查冰山元數據生成狀態

請注意

如果您計劃使用BigQuery作為你的冰山閱讀器客戶端,您必須設置spark.databricks.delta.write.dataFilesToSubdir真正的磚適應BigQuery要求的數據布局。

看到限製

什麼時候統一生成冰山元數據?

磚觸發器的冰山元數據生成異步三角洲湖寫事務完成後使用相同的計算,完成了三角洲地區事務。你也可以手動觸發冰山元數據的生成。看到手動觸發冰山元數據轉換

為了避免寫延遲與冰山相關元數據生成,表頻繁提交可能包多個δ提交到一個冰山提交。

三角洲湖確保隻有一個冰山元數據生成過程正在進行中。提交,將引發第二個並發冰山元數據生成過程將成功提交δ,但他們不會觸發異步冰山元數據的生成。這可以防止層疊延遲為元數據生成工作負載頻繁提交(提交之間秒到幾分鍾)。

看到三角洲和冰山表版本

檢查冰山元數據生成狀態

統一添加以下字段統一目錄和冰山跟蹤表元數據的元數據生成狀態:

元數據字段

描述

converted_delta_version

最新版本的冰山三角洲表元數據生成成功。

converted_delta_timestamp

最新的時間戳三角洲冰山生成元數據已成功提交。

在磚上,你可以使用數據瀏覽審查這些元數據字段。這些字段和值也返回時使用REST API來獲得一個表

冰山看到文檔閱讀器客戶端如何審查表屬性外磚。對於OSS Apache火花,你可以看到這些屬性使用下麵的語法:

顯示TBLPROPERTIES<- - - - - -的名字>;

手動觸發冰山元數據轉換

您可以手動觸發冰山的元數據生成δ表的最新版本。這個操作同步運行,也就是說,當它完成後,表內容可在冰山反映了三角洲表的最新版本轉換過程開始時可用。

這個操作不應是必要的在正常情況下,但可以幫助如果你遇到以下:

  • 一個集群元數據自動生成成功之前終止。

  • 一個錯誤或工作中斷元數據生成失敗。

  • 客戶端不支持統一的冰山gneration寫入三角洲的元數據表。

使用下麵的語法來手動觸發冰山元數據生成:

MSCK修複<- - - - - -的名字>同步元數據

看到修理表

閱讀使用JSON元數據路徑

一些冰山客戶要求您提供一個版本化的元數據文件路徑注冊外部冰山表。每次統一轉換冰山三角洲表的一個新版本,它會創建一個新的元數據的JSON文件。

客戶使用JSON元數據路徑包括BigQuery配置冰山。請參考文檔冰山閱讀器客戶端配置細節。

三角洲湖店冰山下的元數據表目錄,使用以下模式:

<- - - - - -路徑> /元數據/v<版本- - - - - -數量> - - -uuid元數據json

你可以找到這個文件的路徑使用數據瀏覽。表啟用統一後,三角洲的詳細信息表包含一個字段的冰山的元數據位置。

您還可以使用REST API來獲取所有表的詳細信息,包括元數據的位置。使用下麵的命令:

得到api/2.1/團結- - - - - -目錄// <目錄- - - - - -的名字> . <schame- - - - - -的名字> . <- - - - - -的名字>

反應包括以下信息:

{“delta_uniform_iceberg”:{“metadata_location”:“< cloud-storage-uri > /元數據/ v <版本號> - < uuid > .metadata.json”}}

重要的

基於路徑的冰山讀者客戶可能需要手動更新和刷新JSON元數據路徑讀取當前表的版本。用戶查詢時可能會遇到錯誤冰山表使用過時的版本作為鑲花從三角洲表中刪除數據文件真空

閱讀使用統一編目冰山編目端點

冰山冰山一些客戶可以連接到其他目錄。統一目錄提供了一個冰山的隻讀實現其他目錄啟用了統一的API為三角洲表使用的端點. . / api / 2.1 / unity-catalog /冰山。看到冰山REST API規範使用REST API的細節。

客戶知道支持冰山目錄API包括Apache火花,Flink, Trino。您必須配置訪問底層雲對象存儲包含三角洲表啟用了製服。請參考文檔冰山閱讀器客戶端配置細節。

您必須生成和配置一個磚個人訪問令牌連接統一目錄允許其他服務。看到身份驗證數據磚自動化

下麵是一個示例的設置來配置OSS Apache火花製服讀冰山:

“spark.sql.extensions”:“org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions”,“spark.sql.catalog.unity”=“org.apache.iceberg.spark.SparkCatalog”,“spark.sql.catalog.unity.catalog-impl”:“org.apache.iceberg.rest.RESTCatalog”,“spark.sql.catalog.unity.uri”:“< api-root > . . / api / 2.1 / unity-catalog /冰山”,“spark.sql.catalog.unity.token”:“< your_personal_access_token >”,“spark.sql.catalog.unity.io-impl”:“org.apache.iceberg.aws.s3.S3FileIO

替代的工作空間的完整的URL生成個人訪問令牌< api-root >

請注意

當查詢目錄表中統一使用此方法,對象標識符使用以下模式:

團結。<目錄- - - - - -的名字> . <模式- - - - - -的名字> . <- - - - - -的名字>

這個模式使用相同的三層命名空間在統一目錄,但增加了一個額外的前綴團結

三角洲和冰山表版本

三角洲湖和冰山都允許時間旅行查詢使用存儲在表的元數據表版本或時間戳。

一般來說,冰山和δ表版本不一致通過提交時間戳或ID的版本。如果您想要驗證哪個版本的三角洲表冰山表對應的特定版本,您可以使用相應的表冰山上設置的屬性表。看到檢查冰山元數據生成狀態

限製

存在以下局限性:

  • 製服不啟用工作表上刪除向量。看到刪除向量是什麼?

  • 三角洲具有統一的表不支持啟用列表,地圖,無效類型。

  • 冰山的客戶隻能從製服。不支持寫道。

  • 冰山讀者客戶可能個人的局限性,不管製服。看到你選擇的客戶文檔。

  • 冰山讀者1.2.0下麵客戶版本不支持INT96時間戳類型由Apache火花。使用下麵的代碼在筆記本裏寫統一表,以避免這種限製:spark.conf.set (“spark.sql.parquet.outputTimestampType”,“TIMESTAMP_MICROS”)

  • 統一的公共預覽版目錄冰山端點並不意味著大規模生產工作負載。你可能會經曆病原如果你超過5查詢每秒的閾值。

以下三角洲湖特性為三角洲客戶當啟用統一的工作,但沒有冰山的支持:

  • 改變數據提要

  • 三角洲分享