Azure Databricks指定Parquet格式时REPLACE TABLE AS SELECT失效问题
Azure Databricks 14.3 LTS 中 CREATE OR REPLACE TABLE 指定PARQUET格式报错的解决办法
问题本质
你通过指定LOCATION创建的是外部数据库f1_processed,无格式的CREATE OR REPLACE TABLE AS SELECT默认使用Delta格式,而Delta对外部表的REPLACE操作做了专门支持;但显式指定USING PARQUET后,外部Parquet表不支持这种原子替换操作,因此触发[UNSUPPORTED_FEATURE.TABLE_OPERATION]错误。
可行解决方案
改用Delta格式(推荐)
如果业务不强制要求Parquet,直接使用默认的Delta格式即可,也可以显式指定USING DELTA,语句如下:CREATE OR REPLACE TABLE f1_processed.circuits USING DELTA AS SELECT * FROM v1拆分操作实现Parquet表替换
若必须使用Parquet格式,可拆分删除和创建两步操作,确保数据存储位置一致:- 删除已有表:
DROP TABLE IF EXISTS f1_processed.circuits - 重新创建Parquet格式表(需指定原表的存储路径):
CREATE TABLE f1_processed.circuits USING PARQUET LOCATION '/path/to/your/circuits/data' AS SELECT * FROM v1
- 删除已有表:
用REPLACE INTO替换数据(表结构不变时适用)
如果只是需要替换表内数据而非重建表结构,且查询结果与原表结构一致,可使用:REPLACE INTO f1_processed.circuits SELECT * FROM v1
内容的提问来源于stack exchange,提问作者Dhruv
相关产品推荐
相关产品推荐

