引言
最近的项目中,有删除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
还没有评论,来说点什么吧。