【问题标题】:Update/Edit records in Hdfs using Hive使用 Hive 更新/编辑 Hdfs 中的记录
【发布时间】:2019-03-09 10:06:10
【问题描述】:
我有一些人在 HDFS 中的记录。我使用 Hive 中的外部表来查看,对特定数据进行分析,也可以在其他程序中在外部使用它。
最近我遇到了一个用例,我必须更新 HDFS 中的数据。根据文档,我知道我们无法使用外部表更新或删除数据。
另一个问题是数据不是ORC格式。它实际上是 TEXTFILE 格式。所以我也无法更新或删除内部表中的数据。由于它在生产中,我无法将其复制到任何地方以将其转换为 ORC 格式。请建议我如何编辑 HDFS 中的数据。
【问题讨论】:
标签:
hadoop
hive
hdfs
hiveql
【解决方案1】:
您可以使用 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。