如何删除配置单元表记录?

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... 一些其他子句。

【讨论】:

以上是关于如何删除配置单元表记录?的主要内容,如果未能解决你的问题,请参考以下文章

比较 2 个配置单元表以查找没有任何唯一列/时间戳的更新/插入/删除记录并将其附加到 Hadoop 中的基表

Spring中单元测试如何插入记录(无删除方法)

如何删除没有临时表的 MySQL 表中的所有重复记录

表视图,如何将删除按钮放在前面?

单击单元格文本时如何从单元格中删除文本

如何批量删除数据库里某个表里的多条记录