重命名和删除列与三角洲湖列映射
预览
这个特性是在公共预览。
砖支持三角洲湖表的列映射,这使得仅元数据更改列标记为没有重写数据文件删除或重命名。它还允许用户名三角洲表列使用字符不允许拼花,如空间,这样用户可以直接摄取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_name来new_col_name
更多的例子,请参阅更新三角洲湖表模式。
删除列
请注意
在砖运行时11.0及以上。
当列映射为δ启用表,您可以将一个或多个列:
改变表table_name下降列col_name改变表table_name下降列(col_name_1,col_name_2,…)
更多细节,请参阅更新三角洲湖表模式。
流和列映射模式变化
重要的
这个特性是在砖运行时的13.1及以上的公共预览。
您可以提供一个模式跟踪位置,使流从三角洲启用表和列映射。这克服一个问题非附加模式变化可能导致破碎的流。
每个流读取数据源必须有它自己的schemaTrackingLocation
指定。指定的schemaTrackingLocation
必须包含在指定的目录吗checkpointLocation
流目标表的写。
请注意
为流负载组合来自多个源三角洲数据表,您需要指定的目录中checkpointLocation
对于每一个源表。
的选项schemaTrackingLocation
用于指定模式的路径跟踪,如以下代码所示的例子:
checkpoint_path=“/道路/ / checkpointLocation”(火花。readStream。选项(“schemaTrackingLocation”,checkpoint_path)。表(“delta_source_table”)。writeStream。选项(“checkpointLocation”,checkpoint_path)。toTable(“output_table”))