Impala 中删除记录踩到的坑

引言

最近的项目中,有删除Impala库中的数据,但是使用DELETE关键字进行删除,会提示错误,所以就不能使用这种方法,最终是通过分区进行删除的。

过程

通过DELETE语句删除报错信息

[gsslave1:21000] > DELETE FROM ***.****WHERE *****= 155;
Query: DELETE FROM ***.**** WHERE *****= 155
Query submitted at: 2021-06-29 17:51:02 (Coordinator: http://myslave1:25000)
ERROR: AnalysisException: Impala does not support modifying a non-Kudu table: ***.****

也就是说,不允许修改非Kudu的表。

查看一下数据表的表结构

CREATE TABLE ***.**** (
  aaa STRING,
  bbb STRING,
  ccc STRING,
  ddd STRING,
  ***** INT
)
STORED AS TEXTFILE
LOCATION '**********'

重新构建一下这个表,以这种方式进行创建

CREATE TABLE ***.**** (
  aaa STRING,
  bbb STRING,
  ccc STRING,
  ddd STRING
)
PARTITIONED BY (
  ***** INT
)
STORED AS TEXTFILE
LOCATION '**********'

此时,插入的sql语句也不会发生改变,这时候,我们可以通过修改表操作进行删除相关记录。

alter table ***.****drop if exists partition(*****=155)

结论

实际上操作的可能是个文件,把每个分区都当作一个文件来处理。

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。