7

如何重命名 Databricks 中的列?

以下不起作用:

ALTER TABLE mySchema.myTable change COLUMN old_name new_name int

它返回错误:

不支持 ALTER TABLE CHANGE COLUMN 将类型为“IntegerType >(nullable = true)”的列“old_name”更改为类型为“IntegerType (nullable = true)”的“new_name”;

如果有所不同,则此表使用的是 Delta Lake,并且未按此“old_name”列进行分区或 z 排序。

4

2 回答 2

13

您不能重命名或更改 Databricks 中的列数据类型,只能添加新列、重新排序或添加列注释。为此,您必须使用该overwriteSchema选项重写表。

从本文档中获取以下示例:

spark.read.table(...)
  .withColumnRenamed("date", "date_created")
  .write
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .table(...)
于 2019-12-26T18:59:45.387 回答
5

为了能够重命名列,应该使用带有saveAsTable的overwriteSchema :

spark.read.table(Table_Name)
  .withColumnRenamed("currentName", "newName")
  .write
  .format("delta")
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .saveAsTable("Table_Name")
于 2021-04-23T19:58:44.900 回答