Dav*_*dox 6 databricks delta-lake
如何重命名 Databricks 中的列?
以下不起作用:
ALTER TABLE mySchema.myTable change COLUMN old_name new_name int
Run Code Online (Sandbox Code Playgroud)
它返回错误:
不支持 ALTER TABLE CHANGE COLUMN 将类型为 'IntegerType >(nullable = true)' 的列 'old_name' 更改为类型为 'IntegerType (nullable = true)' 的'new_name';
如果它有所不同,则该表使用的是 Delta Lake,并且它没有按此“old_name”列进行分区或按 z 排序。
小智 13
您不能在 Databricks 中重命名或更改列数据类型,只能添加新列、重新排序或添加列注释。为此,您必须使用该overwriteSchema选项重写该表。
从本文档中获取以下示例:
spark.read.table(...)
.withColumnRenamed("date", "date_created")
.write
.mode("overwrite")
.option("overwriteSchema", "true")
.table(...)
Run Code Online (Sandbox Code Playgroud)
Cri*_*pan 10
最近发布了一些修改,允许重命名 Databricks 中 DELTA TABLES 上的列。
需要在表上设置此属性:
ALTER TABLE <table_name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '2',
'delta.minWriterVersion' = '5',
'delta.columnMapping.mode' = 'name'
)
Run Code Online (Sandbox Code Playgroud)
之后,您可以像往常一样重命名该列。
ALTER TABLE <table_name> RENAME COLUMN old_col_name TO new_col_name
Run Code Online (Sandbox Code Playgroud)
检查这个:https: //docs.databricks.com/delta/delta-column-mapping.html
其他有用的链接:
https://docs.databricks.com/delta/delta-batch.html#rename-columns-1
https://docs.databricks.com/delta/delta-batch.html#change-column-type-or-name
为了能够重命名列,应使用overwriteSchema和saveAsTable :
spark.read.table(Table_Name)
.withColumnRenamed("currentName", "newName")
.write
.format("delta")
.mode("overwrite")
.option("overwriteSchema", "true")
.saveAsTable("Table_Name")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9462 次 |
| 最近记录: |