0

当我将(csv)文件加载到配置单元表时,我可以在不覆盖的情况下加载,从而将新文件添加到表中。在内部,文件只是复制到 HDFS 中的正确文件夹(例如 user/warehouse/dbname/tablName/datafile1.csv)。并且可能更新了一些元数据。

几次加载后,我想从表中删除特定文件的内容。

我确信我不能简单地删除文件,因为元数据也需要调整。为此必须有某种内置功能。

我怎么做?

4

2 回答 2

0

为什么需要它?我的意思是 Hive 被开发用作一个仓库,您可以在其中放置很多 n 很多 n 大量数据,而不是时不时地删除数据。至少对我而言,这种需求似乎是一个考虑不周的架构或对 Hive 的不当使用。

如果你真的有这些需求,为什么不创建分区表呢?如果您需要删除某些特定数据,只需使用TRUNCATE或删除该特定分区ALTER

TRUNCATE TABLE table_name [PARTITION partition_spec];

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...
于 2013-06-14T14:44:27.383 回答
0

如果不时需要此功能,您可以使用 MapR 的发行版,同时允许这种操作没有问题(即使通过 NFS)。否则,如果您没有分区,我认为您必须使用 CTAS 过滤坏文件中的数据来创建新表,或者只需使用“hadoop fs -copyToLocal”将好文件复制回操作系统并将它们移回hdfs 进入新表

于 2013-06-15T07:28:28.757 回答