重命名和删除列与三角洲湖列映射

预览

这个特性是在公共预览

砖支持三角洲湖表的列映射,这使得仅元数据更改列标记为没有重写数据文件删除或重命名。它还允许用户名三角洲表列使用字符不允许拼花,如空间,这样用户可以直接摄取CSV或JSON数据到三角洲,而不需要重命名列之前由于字符限制。

重要的

启用列映射还使随机文件前缀,消除了使用Hive-style探索数据分区的能力。看到三角洲湖和拼花共享分区策略吗?

启用列映射表可能打破依赖三角洲下游操作改变数据提要。看到修改数据提要的局限性为表列映射启用

启用列映射表可能打破流从三角洲表读取源,包括三角洲生活表。看到流和列映射模式变化

如何启用三角洲湖列映射

重要的

启用列映射表升级三角洲表版本。这个协议升级是不可逆转的。表和列映射使只能读入数据砖运行时10.2及以上。

列映射需要以下三角洲协议:

  • 读者版本2或以上。

  • 作家版本5或以上。

δ表所需的协议版本,您可以启用列映射通过设置delta.columnMapping.mode的名字

您可以使用下面的命令来更新表版本,使列映射:

改变<- - - - - -的名字>TBLPROPERTIES(“delta.minReaderVersion”=' 2 ',“delta.minWriterVersion”=“5”,“delta.columnMapping.mode”=“名字”)

请注意

你不能关掉列映射后启用它。如果你想设置“delta.columnMapping.mode”=“没有”,你会得到一个错误。

重命名一个列

请注意

在砖运行时10.2及以上。

当δ表启用列映射,您可以重命名列:

改变<- - - - - -的名字>重命名old_col_namenew_col_name

更多的例子,请参阅更新三角洲湖表模式

删除列

请注意

在砖运行时11.0及以上。

当列映射为δ启用表,您可以将一个或多个列:

改变table_name下降col_name改变table_name下降(col_name_1,col_name_2,…)

更多细节,请参阅更新三角洲湖表模式

支持字符列名称

当δ表启用列映射,您可以包括空间和这些字符表的列的名称:,{}()\ n \ t =

流和列映射模式变化

重要的

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

您可以提供一个模式跟踪位置,使流从三角洲启用表和列映射。这克服一个问题非附加模式变化可能导致破碎的流。

每个流读取数据源必须有它自己的schemaTrackingLocation指定。指定的schemaTrackingLocation必须包含在指定的目录吗checkpointLocation流目标表的写。

请注意

为流负载组合来自多个源三角洲数据表,您需要指定的目录中checkpointLocation对于每一个源表。

的选项schemaTrackingLocation用于指定模式的路径跟踪,如以下代码所示的例子:

checkpoint_path=“/道路/ / checkpointLocation”(火花readStream选项(“schemaTrackingLocation”,checkpoint_path)(“delta_source_table”)writeStream选项(“checkpointLocation”,checkpoint_path)toTable(“output_table”))