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

预览

这个特性是在公共预览在砖运行时13.2及以上。

三角洲通用格式(制服)允许您阅读三角洲与冰山读者客户表。

统一利用两个三角洲湖和冰山由拼花数据文件和元数据层。异步统一元数据自动生成冰山,没有重写数据,这冰山客户可以阅读δ表就像冰山表。一个副本提供两种格式的数据文件。

您可以配置一个外部连接统一目录作为一座冰山目录。看到阅读使用统一编目冰山编目端点

请注意

统一的元数据生成异步运行的计算用于写入数据增量表,这可能会增加司机资源使用情况。

需求

使制服,你必须满足以下要求:

使三角洲制服

重要的

启用统一设置δ表功能IcebergCompatV1,写协议的特性。只有客户支持这个表特性可以写UniForm-enabled表。您必须使用砖运行时13.2或以上写的三角洲表启用了这个功能。

你可以关掉统一通过取消delta.universalFormat.enabledFormats表属性。你不能关掉列映射后启用,和升级三角洲湖读者和作家协议版本无法回复。

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

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

您还必须启用列映射IcebergCompatV1使用统一的。这些设置自动如果你启用统一的表创建期间,像下面的例子:

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

如果你与cta语句创建一个新表,您必须手动指定列映射,如以下示例:

创建T作为选择*source_tableTBLPROPERTIES(“delta.columnMapping.mode”=“名字”,“delta.universalFormat.enabledFormats”=“冰山”);

如果你改变一个现有表,你必须指定这些属性,如以下示例:

改变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查询每秒的阈值。

以下三角洲湖特性为三角洲客户当启用统一的工作,但没有冰山的支持:

  • 改变数据提要

  • 三角洲分享