Hive 是一个基于 Hadoop 的数据分析工具,可以使用类 SQL 语法进行离线数据分析,节省学习成本和扩展功能。
Hive 最初设计时主要是面向批处理和大数据分析,并不直接支持UPDATE和DELETE操作,这是因为Hive的数据存储在HDFS上,而HDFS的设计遵循“一次写入,多次读取”的原则,不支持对文件的随机写入操作。因此,在Hive中没有直接的UPDATE语句,那么如何对数据进行更新修改呢?
我们可以通过其他的方式来间接实现数据的更新,这里介绍常用的几种: INSERT OVERWRITE 覆盖,临时表,临时分区。
1.INSERT OVERWRITE
通过覆盖原有数据的方式来间接实现更新,这种方法适用于数据量不大的情况。
假设现在有一张员工信息表,有 emp_id(员工编号),emp_name(员工名称),需要将emp_id = ‘1024’ 的名称修改为 ‘CodeBoy’。
--示例
INSERT OVERWRITE emp_info
(emp_id
,emp_name
)
SELECT
emp_id
,CASE WHEN emp_id = '1024' THEN 'CodeBoy'
ELSE emp_name
END AS emp_name
FROM emp_info
WHERE ...
/*SQL*/;