转换为δ

适用于:检查标记是的砖的SQL检查标记是的砖运行时

将现有的拼花表转换为表就地三角洲。这个命令将列出目录中的所有文件,创建了一个三角洲湖事务日志跟踪这些文件,并自动推断数据模式通过阅读所有铺文件的页脚。转换过程收集统计信息来提高查询性能的差值表转换。如果你提供一个表名,metastore也更新来反映表现在δ表。

该命令支持冰山转换表的底层文件格式是拼花。在这种情况下,转换生成基于冰山的三角洲湖事务日志表的本地文件清单、模式和分区信息。

语法

转换δtable_name(没有统计数据](分区通过条款]

参数

  • table_name

    一个可选的资格表标识符或路径拼花冰山文件目录。必须不包含一个名称时间规范。对于冰山的表,你只能使用路径,转换管理冰山表不支持。

  • 没有统计数据

    在转换过程中绕过统计信息收集,完成转换速度更快。表转换为三角洲湖后,您可以使用优化ZORDER通过重组数据布局和生成统计数据。

  • 分区的

    通过指定的分区创建的表列。当table_name是一个路径,分区通过需要分区的数据。当table_name是一个合格的表标识符,分区通过条款是可选的,分区规范从metastore加载。无论是哪种方法,转换过程中止抛出一个异常,如果提供的目录结构不符合或加载分区通过规范。

    请注意

    在砖运行时11.1及以下,分区通过是一个为所有分区数据所需的参数。

例子

请注意

你不需要提供分区信息注册到metastore冰山表或表。

转换δdatabase_nametable_name;——只有拼花表转换δ拼花s3:/ /我的- - - - - -/路径//分区通过(日期日期);——如果表分区转换δ冰山s3:/ /我的- - - - - -/路径//;——为元数据使用冰山清单

警告

任何文件不是由三角洲湖是无形的和跟踪运行时可以删除真空。你应该避免更新或添加数据文件转换过程中。表转换后,确保所有经过三角洲湖写道。

有可能是多个外部表共享相同的底层铺目录。在这种情况下,如果你跑了转换在一个外部表,那么你将无法访问其他外部表,因为他们的基础目录已经转换从铺到三角洲湖。再次查询或写这些外部表,你必须运行转换在他们身上。

转换填充目录信息,比如模式和表属性,三角洲湖事务日志。如果底层的目录已经转化为三角洲湖及其元数据不同于目录的元数据,convertMetastoreMetadataMismatchException抛出。

在使用砖运行时,如果你想要的转换覆盖现有的元数据在三角洲湖事务日志,设置SQL配置spark.databricks.delta.convert.metadataCheck.enabled为假。

撤销的转换

如果你有执行三角洲湖等操作删除优化可以改变数据文件:

  1. 垃圾收集运行以下命令:

真空δ' <路径- - - - - -- - - - - -> '保留0小时
  1. 删除< path-to-table > / _delta_log目录中。