【问题标题】:How to delete data physically with Presto/Trino?如何使用 Presto/Trino 物理删除数据?
【发布时间】:2021-10-09 19:00:25
【问题描述】:

在我的 Presto (358) 安装中,我有两个工作的蜂巢连接器:

  • S3
  • Azure blob (ABFS)

一切正常,但是当我调用 DROP (TABLE/SCHEMA)DELETE FROM 时,删除只发生在 Metastore 中,没有数据被物理删除。适用于 S3 和 ABFS。

这在替换数据的情况下会变得很成问题:

> DROP TABLE hive.abc; 
-- ok

> CREATE TABLE hive.abc AS (...) 
-- ERROR: Target directory 'abc' already exists.

同样适用于删除分区等

有没有办法真的删除数据?

【问题讨论】:

    标签: hive presto trino


    【解决方案1】:

    找到解决方案。主要区别在于为架构及其表指定 external_locationlocation

    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 用于表将防止数据删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-04
      • 2022-10-07
      • 2021-08-12
      • 2023-01-26
      • 2023-03-06
      • 2019-01-08
      • 2019-06-23
      • 2021-10-31
      相关资源
      最近更新 更多