如何删除配置单元表记录?
Posted
技术标签:
【中文标题】如何删除配置单元表记录?【英文标题】:How to delete hive table records ? 【发布时间】:2018-02-21 10:27:20 【问题描述】:如何删除 hive 表记录,我们那里有 100 条记录,我只需要删除 10 条记录, 当我使用
dfs -rmr table_name 整个表被删除 如果有机会在 Hbase 中删除,发送到 Hbase 中的数据,
【问题讨论】:
【参考方案1】:您不能直接从 Hive 表中删除, 但是,您可以使用覆盖 Hive 表的解决方法
insert overwrite into table_name
select * from table_name
where id in (1,2,3,...)
【讨论】:
【参考方案2】:您无法从 Hive 表中删除数据,因为它已写入 HDFS 的文件中。您只能删除会删除 HDFS 中目录的分区。所以最好的做法是有分区,如果你想在将来删除。
【讨论】:
【参考方案3】:要删除表中的记录,您可以使用 Hive 客户端中的 SQL 语法:
DELETE FROM tablename [WHERE expression]
【讨论】:
感谢重播,我需要从 100 条记录中删除前 10 条记录【参考方案4】:用 where 和你的 key 试试 in 子句
DELETE FROM tablename where id in (select id from tablename limit 10);
示例:- 我在蜂巢中有酸性事务表
select * from trans;
+-----+-------+--+
| id | name |
+-----+-------+--+
| 2 | hcc |
| 1 | hi |
| 3 | hdp |
+-----+-------+--+
现在我只想删除 2 个,那么我的删除语句就是
delete from trans where id in (select id from trans limit 1);
结果:-
select * from trans;
+-----+-------+--+
| id | name |
+-----+-------+--+
| 1 | hi |
| 3 | hdp |
+-----+-------+--+
所以我们刚刚删除了第一条记录,这样您可以指定限制 10,然后 hive 可以删除前 10 条记录。
如果您只需要删除具有特定顺序的前 10 个(例如从 1 到 10 删除 id),则可以在子查询中指定 orderby... 一些其他子句。
【讨论】:
以上是关于如何删除配置单元表记录?的主要内容,如果未能解决你的问题,请参考以下文章