【问题标题】:DELETE FROM table_name Cloudera Impala从表名中删除 Cloudera Impala
【发布时间】:2016-04-12 09:45:43
【问题描述】:

我是 Impala 的新手,我正在尝试了解如何从表中删除记录... 我试过寻找删除命令,但没有找到可以理解的指令……

这是我的表结构:

create table Installs (BrandID INT, PublisherID INT, InstallDate STRING, HourNum INT, Country STRING, Installs INT) PARTITIONED BY (day INT, month INT, year INT) STORED AS PARQUET

在 Hadoop 中可以删除吗? 语法是如何工作的? 任何帮助都会对我有很大帮助...谢谢:)

【问题讨论】:

    标签: hadoop impala hadoop-partitioning


    【解决方案1】:

    参考书-learning-cloudera-impala

    Impala 不支持删除或删除表中的行。另一种方法是删除表或将所需数据迁移到其他表,然后删除整个原始表。

    为了在其他数据库系统中模拟 UPDATE 或 DELETE 语句的效果,通常您使用 INSERT 或 CREATE TABLE AS SELECT 将数据从一个表复制到另一个表,在复制操作期间过滤或更改适当的行。

    work around

    【讨论】:

    • @Brmat Kishore 的回答专门针对 Impala,并且是正确的。这是出乎意料且记录不充分的行为,在我们开始使用 Impala 时让我们的团队感到困惑。
    【解决方案2】:

    简短回答:不,Impala 不支持 DELETE。解决方法是用您要删除的数据重写表数据。

    Cloudera Impala 虽然支持 SQL 并可用于数据仓库工作负载,但与传统的 RDBMS 不同。与 Hive 一样,它将其文件存储在 HDFS 中(并且可以在许多方面与 Hive 互操作),因此旨在将非常大的文件存储在块中。

    因此,它与它所依赖的 HDFS 一样,并非旨在有效删除数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多