databricks - 如何在Databricks中重命名列

标签 databricks delta-lake

如何在Databricks中重命名列?

以下内容不起作用:

ALTER TABLE mySchema.myTable change COLUMN old_name new_name int

它返回错误:

ALTER TABLE CHANGE COLUMN is not supported for changing column 'old_name' with type 'IntegerType >(nullable = true)' to 'new_name' with type 'IntegerType (nullable = true)';



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

最佳答案

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

请从this documentation中获取以下示例:

spark.read.table(...)
  .withColumnRenamed("date", "date_created")
  .write
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .table(...)

关于databricks - 如何在Databricks中重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491350/

相关文章:

oracle - 我在尝试使用 cx_Oracle 从 Azure Databricks Notebook 连接 Oracle 时遇到错误

pyspark - 如何在 NoteBook 以外的 pyspark 作业中使用 dbutils 命令

scala - Apache Spark 3 和向后兼容性?

apache-spark - 如何一次查询 delta lake 表中的所有版本以跟踪对特定 ID 所做的更改

用于安装 Datadog 的 Databricks 初始化脚本不起作用

rest - 使用 Spark(Databricks) 的并行 REST API 请求

python - Databricks Koalas 基于另一个 COlumn 值 Lambda 函数的列赋值

databricks - 如何防止 Delta Lake 检查点在 Azure Databricks 中被删除?

amazon-s3 - S3 湖形成治理表和数据 block 增量表之间的主要区别是什么?