Loading... # 引言 最近的项目中,有删除Impala库中的数据,但是使用DELETE关键字进行删除,会提示错误,所以就不能使用这种方法,最终是通过分区进行删除的。 # 过程 通过DELETE语句删除报错信息 ```bash [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的表。 查看一下数据表的表结构 ```sql CREATE TABLE ***.**** ( aaa STRING, bbb STRING, ccc STRING, ddd STRING, ***** INT ) STORED AS TEXTFILE LOCATION '**********' ``` 重新构建一下这个表,以这种方式进行创建 ```sql CREATE TABLE ***.**** ( aaa STRING, bbb STRING, ccc STRING, ddd STRING ) PARTITIONED BY ( ***** INT ) STORED AS TEXTFILE LOCATION '**********' ``` 此时,插入的sql语句也不会发生改变,这时候,我们可以通过修改表操作进行删除相关记录。 ```sql alter table ***.****drop if exists partition(*****=155) ``` # 结论 实际上操作的可能是个文件,把每个分区都当作一个文件来处理。 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏