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

相关推荐
sunxunyong4 小时前
kyuubi 连接kerberos集群配置
hadoop
坚持就完事了10 小时前
Hadoop实战初步学习
hadoop·学习
It's Q16 小时前
hive学习分区&&函数
hive·hadoop·学习
隐于花海,等待花开18 小时前
5.TRIM / LTRIM / RTRIM 函数深度解析
大数据·hive
RestCloud19 小时前
TiDB 混合负载场景下的 ETL 与 CDC 实践
数据仓库·tidb·etl·cdc·数据同步·数据库传输
lifewange20 小时前
Hadoop 全套常用 Shell 命令完整版
大数据·hadoop·npm
lifewange20 小时前
Hadoop 完整入门详解
大数据·hadoop·分布式
菜鸟小码2 天前
Hive数据模型、架构、表类型与优化策略
hive·hadoop·架构
AllData公司负责人2 天前
AllData数据中台通过开源项目RustFS建设现代数据湖存储,接入工业, 医疗, 物联网数据,包括文件/图像/音频/视频数据!
数据库·数据仓库·物联网·开源·数据存储·数据接入·rustfs
IT从业者张某某2 天前
基于Docker的hadoop容器安装hive并测试
hive·hadoop·docker