首页 > 解决方案 > 使用 Hive 更新/编辑 Hdfs 中的记录

问题描述

我有一些人在 HDFS 的记录。我使用 Hive 中的外部表来查看,对特定数据进行分析,并且我可以在其他程序中外部使用它。

最近我有一个用例,我必须更新 HDFS 中的数据。根据文档,我知道我们无法使用外部表更新或删除数据。

另一个问题是数据不是ORC格式。它实际上是 TEXTFILE 格式。所以我也无法更新或删除内部表中的数据。由于它在生产中,我无法将其复制到任何地方以将其转换为 ORC 格式。请建议我如何编辑 HDFS 中的数据。

标签: hadoophivehdfshiveql

解决方案


INSERT OVERWRITE您可以使用过滤器和其他转换使用 + 从自身中选择来更新或删除:

insert overwrite table mytable
select col1, --apply transformations here
       col2, --for example: case when col2=something then something_else else col2 end as col2
       ...
      colN
  from mytable
 where ... filter out records you want to delete 

此方法适用于外部和托管以及所有存储格式。只需编写返回所需数据集的选择并添加 INSERT OVERWRITE。


推荐阅读