hadoop - 使用 Hive 更新/编辑 Hdfs 中的记录
问题描述
我有一些人在 HDFS 的记录。我使用 Hive 中的外部表来查看,对特定数据进行分析,并且我可以在其他程序中外部使用它。
最近我有一个用例,我必须更新 HDFS 中的数据。根据文档,我知道我们无法使用外部表更新或删除数据。
另一个问题是数据不是ORC格式。它实际上是 TEXTFILE 格式。所以我也无法更新或删除内部表中的数据。由于它在生产中,我无法将其复制到任何地方以将其转换为 ORC 格式。请建议我如何编辑 HDFS 中的数据。
解决方案
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。
推荐阅读
- javascript - 如何将 javascript 函数简化为干净可读的代码?
- c++ - 优先队列函数比较
- jenkins - 重建 jenkins 作业而不进行更改显示失败状态
- python - Google colab - 有没有办法在会话期间记录峰值 RAM?
- sql - 根据特定条件从一个表中检索与另一个表相关的记录
- javascript - Discord Bot,可以间隔自动清除消息
- python - 每次出现 NaN 时如何创建运行总计并重新启动它?
- python - 如何使用从 Visual Studio Code 创建的相同环境从 Pycharm 打开项目
- html - 增加 png img 大小,而不会丢失分辨率,
- webstorm - WebStorm 和 aws-amplify 未声明的指令错误