在我安装的 Presto (358) 中,我有两个可用的配置单元连接器:
- S3
- Azure Blob (ABFS)
一切正常,但当我调用DROP (TABLE/SCHEMA)
或DELETE FROM
时,删除仅发生在元存储中,并且没有物理删除数据。适用于 S3 和 ABFS。
在替换数据的情况下,这会变得相当成问题:
> DROP TABLE hive.abc;
-- ok
> CREATE TABLE hive.abc AS (...)
-- ERROR: Target directory 'abc' already exists.
这同样适用于删除分区等。
有没有办法真正删除数据?
最佳答案
找到解决办法了。主要区别在于为架构及其表指定 external_location 与 location。
CREATE SCHEMA hive.xyz WITH (location = 'abfs://...');
CREATE TABLE hive.xyz.test AS SELECT (...);
DELETE FROM hive.xyz.test WHERE TRUE;
-- Data ARE physically deleted
CREATE SCHEMA hive.xyz;
CREATE TABLE hive.xyz.test
WITH (external_location = 'abfs://...')
AS SELECT (...);
DELETE FROM hive.xyz.test WHERE TRUE;
-- Data ARE NOT physically deleted.
结论:表的 external_location
将阻止数据删除。
关于hive - 如何使用 Presto/Trino 物理删除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68655219/