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 天前
数据仓库笔记 第三篇:常用缓慢变化维处理方式介绍
数据仓库
哥本哈士奇1 天前
数据仓库笔记 第一篇:数据仓库的定义、历史与意义
数据仓库
哥本哈士奇1 天前
数据仓库笔记 第四篇:Star Schema 层(维度建模)
数据仓库
RestCloud1 天前
零售行业全渠道数据整合:ETL工具如何支撑精准营销?
数据仓库·etl·零售·数据处理·数据集成·数据传输·数据同步
哥本哈士奇2 天前
数据仓库笔记 第二篇:PSA 层(持久化暂存区)详解
数据仓库
juniperhan2 天前
Flink 系列第17篇:Flink Table&SQL 核心概念、原理与实战详解
大数据·数据仓库·分布式·sql·flink
菜鸟小码2 天前
Hadoop大数据时代的底座和基石
大数据·hadoop·分布式
隐于花海,等待花开2 天前
18.TRUNC / LAST_DAY / NEXT_DAY 函数深度解析
大数据·hive
隐于花海,等待花开2 天前
17.DATE_FORMAT 函数深度解析
大数据·hive
隐于花海,等待花开2 天前
15.TO_DATE 函数深度解析
大数据·hive