如何删除hive表记录?

时间:2018-02-21 10:27:21

标签: hive hdfs bigdata hiveql

如何删除hive表记录,我们有100条记录,我只需要删除10条记录, 当我使用

  

dfs -rmr table_name整个表已删除   如果有机会在Hbase中删除,发送到Hbase中的数据,

4 个答案:

答案 0 :(得分:1)

您不能直接从Hive表中删除, 但是,您可以使用一种替代方法来覆盖Hive表

insert overwrite into table_name
select * from table_name
where id in (1,2,3,...)

答案 1 :(得分:0)

要删除表中的记录,可以使用hive客户端的SQL语法:

 DELETE FROM tablename [WHERE expression]

答案 2 :(得分:0)

使用in子句

尝试使用where和key
DELETE FROM tablename where id in (select id from tablename limit 10);

示例: - 我在hive中有酸交易表

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条记录。

你可以指定orderby ...你的子查询中的一些其他子句,如果你只需要删除前10个具有特定顺序(如删除id从1到10)。

答案 3 :(得分:0)

您无法从Hive表中删除数据,因为该数据已被写入HDFS的文件中。您只能删除将删除HDFS中目录的分区。因此,最佳做法是在以后要删除分区时使用分区。