Hive要修改表中的某个值,如何实现?
Hive是一个数据仓库工具,它提供了数据的静态查询功能,而不能处理在线事务。Hive不支持传统的Update、Delete操作。如果需要修改表中的某个值,可以尝试以下两种方案:
1、创建新表,将原表中的数据复制到新表,并对需要修改的值进行更改,删除原表
1) 创建一个新表,其结构与原表相同
CREATETABLE tmp_table ...;
2) 使用INSERT语句,将原表中的数据复制到新表,并对需要修改的值进行更改
INSERTINTOTABLE tmp_table
SELECT col1,col2,CASEWHEN col3=修改值 THEN 新值 ELSE col3 END,col4,...FROM src_table;
3) 删除原表
DROPTABLE src_table;
4) 将新表重命名为原表的名字
ALTERTABLE tmp_table RENAMETO src_table;
2、使用INSERT OVERWRITE语句,结合WHERE条件,将原表中的数据复制覆盖回去,并对需要修改的值进行更改
INSERT OVERWRITE TABLE src_table
SELECT col1,col2,col3,col4,...FROM src_table WHERE col3!=修改值
UNIONALLSELECT col1原来值,col2原来值,col3新值,col4原来值,...;
值得注意的是,以上两种方案会将整个表的数据复制一遍,如果表很大,可能会消耗较多的时间和资源。对于大数据量的情况,可以考虑使用MapReduce或Spark等分布式计算引擎来对数据进行修改
另外,在修改数据之前,不要忘记备份原来的数据!
版权归原作者 对许 所有, 如有侵权,请联系我们删除。