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

相关推荐
【赫兹威客】浩哥1 分钟前
【赫兹威客】完全分布式Hadoop测试教程
大数据·hadoop·分布式
weixin_462446232 小时前
一键安装 Hadoop 3.3.6 自动化脚本详解 |(含 JAVA_HOME 自动配置)
java·hadoop·自动化
3分钟秒懂大数据14 小时前
实时数仓实战篇一:长周期去重指标建设
大数据·数据仓库·面试·性能优化·flink
蓝眸少年CY14 小时前
什么是Hadoop
大数据·hadoop·分布式
zhixingheyi_tian15 小时前
Yarn 之 numa-awareness
hadoop
白日与明月15 小时前
Hive 中 UNION 与 UNION ALL
hive
白日与明月16 小时前
Hive 大表 Join 优化:从策略选择到倾斜处理
数据仓库·hive·hadoop
Java程序员威哥17 小时前
SpringBoot2.x与3.x自动配置注册差异深度解析:从原理到迁移实战
java·大数据·开发语言·hive·hadoop·spring boot·后端
【赫兹威客】浩哥19 小时前
【赫兹威客】Hadoop完全分布式克隆文件部署教程
大数据·hadoop·分布式
王九思20 小时前
SQL网关 Kyuubi 系列——基本介绍
数据仓库·hive·hadoop·sql·spark