Iceberg 合并datafiles、manifest files,清除过期snapshot、删除孤立文件

本文Iceberg使用的为HiveCataLog,依赖HiveMemstore

1、首先获取要操作的表对象及SparkSession

import org.apache.iceberg.{CatalogProperties, Table}
import org.apache.iceberg.spark.actions.SparkActions
......
......
......
//获取表
val tabled: TableIdentifier = TableIdentifier.of(Namespace.of("ns"), "tb")
val table: Table = hiveCatalog.loadTable(tabled)
//获取SparkSession
val sparkConf = new SparkConf()
val sparkSession: SparkSession = SparkSession.builder().master("local").appName("iceberg").config(sparkConf).getOrCreate()

2、 合并datafiles

filter 可以指定需要操作的数据范围
option 指定合并的目标文件大小

SparkActions.get(sparkSession).rewriteDataFiles(table).filter(Expressions.lessThan("age", 1)).filter(Expressions.greaterThan("age", 10)).option("target-file-size-bytes", (128 * 1024 * 1024).toString) // 128 MB.execute()

3、合并manifest files

SparkActions.get(sparkSession).rewriteManifests(table).rewriteIf(file =>file.length() < 10 *1024*1024)  // 10 MB.execute()

4、删除过期快照

  • 方法一
val before: Long = System.currentTimeMillis() - (1000L * 60 * 60 * 24)
table.expireSnapshots().expireOlderThan(before).commit()
  • 方法二
val before: Long = System.currentTimeMillis() - (1000L * 60 * 60 * 24)
SparkActions.get(sparkSession).expireSnapshots(table).expireOlderThan(before).execute();

5、删除孤立文件

为啥会产生孤立文件?

  • 情况1:计算引擎执行任务失败,会产生不会metadata.json引用的datafile 和metadata file
  • 情况2:标记快照为过期,需要删除没有被引用的datafile,但无法确定该datafile是否被快照引用,导致本该删除datafile却没有被删除
val before: Long = System.currentTimeMillis() - (1000L * 60 * 60 * 24)
SparkActions.get(sparkSession).deleteOrphanFiles(table).olderThan(before).execute()

孤立文件的删除会耗费很长的时间,所以不要频繁进行孤立文件的删除

6、删除旧版本的metadata file

iceberg 每次write都会产生一个新的snapshot,同时也会产生一个新的version。建议给表设置对应的参数:

write.metadata.delete-after-commit.enabled=true
write.metadata.previous-versions-max=5

这样每次对标产生改变的操作commit后,会自动删除老的metadata files,保留指定版本数量的metadata files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6个高清图片素材网站,免费下载,值得推荐~

关于图片素材网站&#xff0c;我一直都在推荐这几个&#xff0c;免费下载&#xff0c;可商用&#xff0c;建议收藏起来~ 菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 网站主要是为新手设计师提供免费素材的&#xff0c;素材的质量都很高&#xff0c;类别也很多&a…

在C++中 ,什么时候用:: ?什么时候用. ?什么时候用->?

在C中 &#xff0c;什么时候用:: ?什么时候用. ?什么时候用->?在 C 中&#xff0c;::、. 和 -> 是三种不同的运算符&#xff0c;用于访问类、结构体、命名空间、指针等的成员。它们的使用场景如下&#xff1a; ::&#xff08;作用域解析运算符&#xff09;&#xff1a…

Git移除commit过的大文件

前言&#xff1a;在提交推送本地更改至仓库时&#xff0c;误将大文件给提交了&#xff0c;导致push时报错文件过大&#xff0c;因此需要将已经commit的大文件移除后再push 若已知要删除的文件或文件夹路径&#xff0c;则可以从第4步开始 1.对仓库进行gc操作 $ git gc 2.查询…

23款奔驰S400豪华型升级后排电动腿托系统,提升后排乘坐舒适性

奔驰S400L后排座椅是不带腿托和脚托的&#xff0c;也没有一键躺平功能&#xff0c;相对于奔驰S级高配车型上配置的右边老板位座椅&#xff0c;舒适性就差强了一些。

【基于Spark的电影推荐系统】环境准备

概览 本科毕设做过电影推荐系统&#xff0c;但当时的推荐算法只有一个&#xff0c;现在已经忘记大部分了&#xff0c;当时也没有记录&#xff0c;因此写这个博客重新来记录一下。此外&#xff0c;技术栈由于快秋招原因来不及做过多的部分&#xff0c;因此只实现简单的功能&…

Vue.nextTick函数的用法及在异步更新中的应用

在Vue.js中&#xff0c;我们经常会遇到需要在DOM更新之后执行一些操作的情况。但是由于Vue的响应式更新是异步执行的&#xff0c;直接在更新数据后立即操作DOM可能得不到正确的结果。为了解决这个问题&#xff0c;Vue提供了Vue.nextTick函数。 Vue.nextTick函数是一个异步方法…

从零开始 Spring Cloud 7:Gateway

从零开始 Spring Cloud 7&#xff1a;Gateway 图源&#xff1a;laiketui.com Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨…

服务都挂了你还在打代码?

服务挂了&#xff1f; 线上服务在疯狂的报错&#xff0c;你还在悠哉悠哉的打代码&#xff0c;等到用户开始反馈问题&#xff0c;这时候才去线上查日志&#xff0c;黄花菜都凉了。老板&#xff1a;“去财务结一下账吧”。 异常告警 对于很多基础设施比较完善的公司&#xff0…

ICC2删除所有电源的方法

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f;知识星球入口 remove_pg_patterns -all remove_pg_strategies -all remove_pg_strategy_via_rules -all remove_pg_via_master_rules -all remove_pg_regions -all remove_routes -net_types {p…

网安周报 | 银行业成为开源软件供应链攻击的目标

网安周报是棱镜七彩推出的安全资讯专栏&#xff0c;旨在通过展示一周内发生的与开源安全、软件供应链安全相关攻击事件&#xff0c;让用户了解开源及软件供应链威胁&#xff0c;提高对安全的重视&#xff0c;做好防御措施。 1、银行业成为开源软件供应链攻击的目标 网络安全研…

微服务入门---SpringCloud(二)

微服务入门---SpringCloud&#xff08;二&#xff09; 1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取配置 1.2.配置热更新1.2.1.方式一1.2.2.方式二 1.3.配置共享1&#xff09;添加一个环境共享配置2&#xff09;在user-service中读取共享配置…

vue2+wangEditor5富文本编辑器(图片视频自定义上传七牛云/服务器)

1、安装使用 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save在main.js中引入样式 import wangeditor/editor/dist/css/style.css在使用编辑器的页…

Android 截图功能实现

Android 截图功能实现 简介效果图功能实现1. 截取当前可见范围屏幕2. 截取当前可见范围屏幕&#xff08;不包含状态栏&#xff09;3. 截取某个控件4. 截取ScrollView5. 长截图6. 截屏动画效果7. 显示截屏结果&#xff0c;自动消失6. 完整代码 简介 在Android应用中开发截图功能…

顺序表的实现

文章目录 1.概念及结构 2.接口实现 3.数组相关oj题 4.顺序表的问题及思考 文章内容 1.概念及结构 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序…

【物理】模拟粒子在电场和磁场中的轨迹研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 模拟粒子在电场和磁场中的轨迹研究是物理学中的一个重要研究领域&#xff0c;涉及到电磁场、粒子运动、轨迹分析等多个方面。在这个研究中&…

Python爬虫实例之淘宝商品页面爬取(api接口)

可以使用Python中的requests和BeautifulSoup库来进行网页爬取和数据提取。以下是一个简单的示例&#xff1a; import requests from bs4 import BeautifulSoupdef get_product_data(url):# 发送GET请求&#xff0c;获取网页内容headers {User-Agent: Mozilla/5.0 (Windows NT…

前端CryptoJS-AES加解密 对应php的AES-128-CBC加解密踩坑(java也相同加解密)

前端部分注意看填充是pkcs7 有个前提&#xff0c;要看前端有没有转成hex格式&#xff0c;如果没转&#xff0c;php那边就不需要调用特定函数转hex格式的 const keyStr 5hOwdHxpW0GOciqZ;const iv 0102030405060708;//加密function Encrypt(word) {let key CryptoJS.enc.Ut…

今天你做代码检查了吗?

当下&#xff0c;各行各业都在寻找可以降本增效的效率途径&#xff0c;AI人工智能、机器学习等概念也被广泛应用至业务中&#xff1b;而广州云标局推出了一款智能ide代码工具——codigger&#xff0c;不仅项目体检能为开发项目提供快速代码检测&#xff0c;主要检测维度包括bug…

【Spring框架】Spring读取与存储综合练习

练习 在 Spring 项⽬中&#xff0c;通过 main ⽅法获取到 Controller 类&#xff0c;调⽤ Controller ⾥⾯通过注⼊的⽅式调⽤ Service 类&#xff0c;Service 再通过注⼊的⽅式获取到 Repository 类&#xff0c;Repository 类⾥⾯有⼀个⽅法构建⼀个 User 对象&#xff0c;返…

抖音账号矩阵系统开发源码

一、技术自研框架开发背景&#xff1a; 抖音账号矩阵系统是一种基于数据分析和管理的全新平台&#xff0c;能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享&#xff1a; ic function indexAction() { //面包屑 $breadcrumbs [ [tit…