我的数据湖有一个Delta
的spark-sql表(Spark 3.4.0
)。
这个表有一个struct列,现在我需要向该struct列添加一个新字段address
。
我尝试的是:
drop table if exists temp.test_struct ;
create table if not exists temp.test_struct (
cola int,
colb struct<name:STRING, age:int>
)
现在更改列:
ALTER TABLE temp.test_struct
CHANGE COLUMN colb colb struct<name:STRING, age:int, address:STRING>
但是,我得到错误消息:
AnalysisException: Cannot update hive_metastore.temp.test_struct field colb type: update a struct by updating its fields
详细的错误显示在本页的末尾。
为什么会发生这种情况,如何解决这个问题?
任何帮助都是感激不尽的。
详细错误信息:
Error in SQL statement: AnalysisException: Cannot update hive_metastore.temp.test_struct field colb type: update a struct by updating its fields.; line 1 pos 0;
AlterColumn resolvedfieldname(StructField(colb,MapType(StringType,StringType,true),true)), StructType(StructField(name,StringType,true),StructField(age,IntegerType,true),StructField(address,StringType,true))
+- ResolvedTable com.databricks.sql.managedcatalog.UnityCatalogV2Proxy@36a5c0b0, temp.test_struct, DeltaTableV2(org.apache.spark.sql.SparkSession@234aab1e,s3://xxx/temp/test_struct,Some(CatalogTable(
Catalog: hive_metastore
Database: temp
Table: test_struct
Owner: root
Created Time: Tue Sep 19 07:17:23 UTC 2023
Last Access: UNKNOWN
Created By: Spark 3.4.0
Type: MANAGED
Provider: delta
Table Properties: [delta.lastCommitTimestamp=1695107842000, delta.lastUpdateVersion=0, delta.minReaderVersion=1, delta.minWriterVersion=2]
Location:.....
1条答案
按热度按时间h7wcgrx31#
使用
ADD COLUMNS
:更多信息请点击此处。