presto操作hive数据的时候如何覆盖写数据

在hive中实现表数据覆盖写用的是insert overwrite,但是这个语句在presto中不支持,在presto中你需要在sql前面写上如下的参数

sql 复制代码
set session hive.insert_existing_partitions_behavior = 'overwrite';

这个配置其他两个参数值如下:

sql 复制代码
set session hive.insert_existing_partitions_behavior = 'append';
set session hive.insert_existing_partitions_behavior = 'error';

默认是append追加写,error一般情况下用不到

带上这个参数之后,正常写insert into语句就行,已存在的分区中的数据会被覆盖,若分区不存在会新建。

要注意的是,有的人会先delete旧数据,但是这种操作会造成分区结构被删掉但是同时底层文件仍然存在的问题,Presto认为该分区不存在,需要新建分区,但底层文件其实还存在,这样会造成 Unable to rename ... 的报错。需要手动去hadoop里删掉底层数据

同时要注意你使用的发行版是那个,博主之前用过李老板家的BOS,那个服务的第三方路径是dgs,因此这个配置被封装成了hivedgs.insert_existing_partitions_behavior

相关推荐
geovindu3 小时前
sql:Managing Complex Joins and Subqueries in SQL using mysql 9.0
大数据·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
zhangzeyuaaa4 小时前
StarRocks 的技术版图:在分析、检索与流处理之间找到位置
大数据·数据仓库
大鳥5 小时前
JSON 解析最佳实践:从入门到生产级优化
hive·sql·spark·json
geovindu5 小时前
sql:SQL Views and Materialized Views using mysql 9.0
大数据·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
ha_lydms6 小时前
Xml Functions(XML 函数)
xml·大数据·hadoop·spark·数据处理·dataworks·maxcompute
ha_lydms6 小时前
Vector Functions(向量函数)
大数据·hadoop·spark·数据处理·dataworks·maxcompute·数据中台
ha_lydms6 小时前
阿里云大数据组件
大数据·hadoop·阿里云·spark·云计算·数据处理·dataworks
ruxshui1 天前
Hadoop 生产运维实战手册
大数据·运维·hadoop
泡干脆面就番茄1 天前
Hive窗口函数:从原理到三大面试题
大数据·数据仓库·hive·hadoop