Databricks-如何更改现有Delta表的分区?

时间:2019-03-04 18:12:27

标签: databricks delta-lake

我在Databricks delta中有一个表,该表由transaction_date分区。我想将分区列更改为view_date。我尝试删除该表,然后使用PARTITIONED BY (view_date)使用新的分区列创建该表。

但是,由于实际文件位于S3中,因此即使我删除配置单元表,分区也保持不变,因此我的尝试失败了。 有什么方法可以更改现有Delta表的分区?还是唯一的解决方案是删除实际数据并使用新指示的分区列重新加载它?

1 个答案:

答案 0 :(得分:1)

实际上没有必要删除表或删除文件。您需要做的就是读取当前表,覆盖内容和schema,然后更改分区列:

val input = spark.read.table("mytable")

input.write.format("delta")
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .partitionBy("colB") // different column
  .saveAsTable("mytable")

只是警告,如果您想读取具有不同分区的表的先前版本,当前似乎不支持time travel