Apache Spark 如何将新分区添加到现有的增量表?

tf7tbtn2  于 2023-06-24  发布在  Apache
关注(0)|答案(2)|浏览(172)

我正在尝试修改现有增量表的分区。我知道如何使用 Dataframe API来实现这一点。我需要使用SPRAK SQL实现类似的事情。有人能帮我吗?
当我试图在命令下运行时

ALTER TABLE MY_DB_NAME.MY_TABLE_NAME ADD PARTITION (PARTITION_COLUMN='PARTITION_VALUE')

我得到的低于误差

AnalysisException: Operation not allowed: `ALTER TABLE ADD PARTITION` is not supported for Delta tables: `spark_catalog`.`my_db_name`.`my_table_name`;
AlterTableAddPartitionCommand `spark_catalog`.`my_db_name`.`my_table_name`, [(Map(partition_column -> partition_value),None)], false

在SPARK SQL中是否也可以这样做?

mjqavswn

mjqavswn1#

这对你有用吗?

REPLACE TABLE MY_DB_NAME.MY_TABLE_NAME
  USING DELTA
  PARTITIONED BY (PARTITION_VALUE)
AS
 SELECT * FROM MY_DB_NAME.MY_TABLE_NAME

Link有更多python/scala和外部/非托管表的例子。

wlsrxk51

wlsrxk512#

您不能直接更改增量表的分区,因为这是在写入数据时确定的。因此,如果你真的想在SQL上做这件事,你应该尝试实际写一个新表:

CREATE OR REPLACE TABLE MY_DB_NAME.MY_TABLE_NAME_2 
USING DELTA 
PARTITION BY ("PARTITION_VALUE") 
AS 
  SELECT * FROM TABLE MY_DB_NAME.MY_TABLE_NAME

相关问题