如何删除hivehadoop数据库中的行

bybem2ql  于 2021-06-04  发布在  Hadoop
关注(0)|答案(4)|浏览(443)

我是hadoop&hive的新手。我想删除我的数据库中的某些行-在HiveHadoop上。我知道它不支持开箱即用,而且hadoop是一个只读文件系统。我很好奇实现这一目标的最佳方法是什么。如果有人曾经这样做过,他们能分享他们的经验/程序吗?
谢谢!

o3imoua4

o3imoua41#

INSERT OVERWRITE TABLE mytable  SELECT * FROM mytable WHERE 1=0;

上面的查询首先删除数据文件,如下所示 OVERWRITE 选项在查询中指定。接下来它将执行 SELECT 要从表中读取记录,当条件失败时, SELECT 查询将获得零条记录并将零条记录插入表中。

wkyowqbh

wkyowqbh2#

最好的方法是对数据进行分区,以便要删除的行位于一个分区中。然后可以删除分区而不影响表的其余部分。这是一个相当可持续的模型,即使您的数据集变得相当大。

qncylg1j

qncylg1j3#

在大数据中真的没有删除。也就是说,如果表或分区不太大,可以覆盖它,或者像jamcon建议的那样将删除的内容隔离到特定的分区。
对于不是太大的数据集,可以执行以下操作

INSERT OVERWRITE TABLE mytable
SELECT * FROM mytable
WHERE ID NOT IN ( 'delete1', 'delete2', 'delete3');
bksxznpy

bksxznpy4#

或者您可以将其余的行(即要保留的行)插入到另一个表中,然后删除旧表。

相关问题