我正在开发 Azure Databricks,Databricks 运行时版本是 -
14.3 LTS (includes Apache Spark 3.5.0, Scala 2.12)
。我面临以下问题。
假设我有一个名为
v1
的视图和一个通过以下命令创建的数据库 f1_processed
CREATE DATABASE IF NOT EXISTS f1_processed
LOCATION "abfss://[email protected]/"
然后,如果我运行以下命令,它将运行良好。
CREATE OR REPLACE TABLE f1_processed.circuits
AS
SELECT * FROM v1;
但是,如果我指定如下代码所示的格式
CREATE OR REPLACE TABLE f1_processed.circuits
USING PARQUET
AS
SELECT * FROM v1;
抛出错误
[UNSUPPORTED_FEATURE.TABLE_OPERATION] The feature is not supported:
Table `spark_catalog`.`f1_processed`.`circuits` does not support REPLACE TABLE AS SELECT.
Please check the current catalog and namespace to make sure the qualified table name is expected,
and also check the catalog implementation which is configured by "spark.sql.catalog". SQLSTATE: 0A000
从第一条命令看出,支持REPLACE TABLE AS SELECT,报错是错误的。如有任何帮助,我们将不胜感激。
CREATE OR REPLACE 命令仅支持 DELTA 表。它在 databricks 的文档here中指定。内容如下。
更换
如果指定,则替换表及其内容(如果已存在)。 此子句仅支持 Delta Lake 表。
该错误可能不会直接说明这一点,但它巧妙地暗示了表格的镶木地板格式。语句
Table 'spark_catalog'.'f1_processed'.'circuits' does not support REPLACE TABLE AS SELECT.
表示由于表是以 parquet 格式创建的,因此无法使用 REPLACE...
命令。