【Iceberg分析】Spark与Iceberg集成落地实践(一)
Spark与Iceberg集成落地实践(一)
文章目录
- Spark与Iceberg集成落地实践(一)
- 清理快照与元数据
- 配置表维度自动清理元数据文件属性
- 手动清理
- 清理孤岛文件
- 合并数据文件
清理快照与元数据
配置表维度自动清理元数据文件属性
每一次写入数据和表变更都会进行一次元数据的版本迭代,默认保存所有。
| Property | Description |
|---|---|
write.metadata.delete-after-commit.enabled | 每次表提交后是否删除旧的跟踪的元数据文件 |
write.metadata.previous-versions-max | 要保留的旧元数据文件的数量 |
SPARK DDL语句
建表时确认metadata生命周期
sparkSession.sql("CREATE TABLE local.iceberg_db.table2( id bigint, data string, ts timestamp) USING iceberg PARTITIONED BY (day(ts)) TBLPROPERTIES('write.metadata.delete-after-commit.enabled'='true','write.metadata.previous-versions-max'='3')");
更改表的metadata生命周期
sparkSession.sql("ALTER TABLE local.iceberg_db.table2 SET TBLPROPERTIES(" +"'write.metadata.delete-after-commit.enabled'='true'," +"'write.metadata.previous-versions-max'='3'" +")");
作用
这只会删除元数据日志中跟踪的元数据文件,而不会删除孤立的元数据文件。
清理从metadata.json链路开始的至data的所有文件,如下图:
手动清理
org.apache.iceberg.Table table = org.apache.iceberg.spark.Spark3Util.loadIcebergTable(spark, "local.iceberg_db.table2");long tsToExpire = System.currentTimeMillis() - (1000 * 60 * 60 * 24); // 保留一天org.apache.iceberg.spark.actions.SparkActions.get().expireSnapshots(table).expireOlderThan(tsToExpire).execute();
清理孤岛文件
孤岛文件的产生:
在 Spark 和其他分布式处理引擎中,任务或作业失败可能会留下未被表元数据引用的文件,在某些情况下,正常快照过期可能无法确定文件不再需要并将其删除。任务失败之后,最好进行一次清理表孤岛文件,若表相关任务成功,则不需要进行清理孤岛文件操作。
org.apache.iceberg.Table table = org.apache.iceberg.spark.Spark3Util.loadIcebergTable(spark, "local.iceberg_db.table2");org.apache.iceberg.spark.actions.SparkActions.get().deleteOrphanFiles(table).execute();
合并数据文件
目前发现,需要分区类有标记删除的记录才会进行合并,why?
org.apache.iceberg.Table table = org.apache.iceberg.spark.Spark3Util.loadIcebergTable(spark, "local.iceberg_db.table2");org.apache.iceberg.spark.actions.SparkActions.get().rewriteDataFiles(table).filter(Expressions.equal("ts", "2024-09-29")).option("target-file-size-bytes", Long.toString(500 * 1024 * 1024)) // 目标大小500 MB.execute();
相关文章:
【Iceberg分析】Spark与Iceberg集成落地实践(一)
Spark与Iceberg集成落地实践(一) 文章目录 Spark与Iceberg集成落地实践(一)清理快照与元数据配置表维度自动清理元数据文件属性手动清理 清理孤岛文件合并数据文件 清理快照与元数据 配置表维度自动清理元数据文件属性 每一次写…...
【Verilog学习日常】—牛客网刷题—Verilog进阶挑战—VL45
异步FIFO 描述 请根据题目中给出的双口RAM代码和接口描述,实现异步FIFO,要求FIFO位宽和深度参数化可配置。 电路的接口如下图所示。 双口RAM端口说明: 端口名 I/O 描述 wclk input 写数据时钟 wenc input 写使能 waddr input 写…...
【强训笔记】day27
NO.1 代码实现: #include<iostream>using namespace std;int n,m; int main() {cin>>n>>m;long long retn;for(int i0;i<m-1;i)retret*(n-1)%109;cout<<ret<<endl;return 0; }NO.2 思路:bfs遍历实现,dis…...
Nginx06-静态资源部署
零、文章目录 Nginx06-静态资源部署 1、静态资源概述 静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理。动态资源:是在Web开发中需…...
MySQL数据库专栏(二)SQL语句基础操作
目录 数据库操作 创建数据库 查看数据库 选择数据库 删除数据库 数据表操作 数据表数据类型 数据表列约束 数据表索引 创建表 查看表 查看表结构 删除表 数据表的增删改操作 …...
【OpenCV 实战】1.手势虚拟拖拽(双手骨骼点识别)
step: 1.opencv 获取视频流 2.在画面上画一个方块 3.通过mediapipe获取手指关键点坐标 4.判断手指是否在方块上 5.若在方块上,方块跟着手指移动 mediapipe网站介绍:Hands - mediapipe (chuoling.github.io) 已上传到GitHub : plumqm/OpenC…...
基于springboot人力资源管理系统源码
项目技术:SpringBoot 运行环境:jdk1.8idea/eclipsemaven3mysql5.6 项目描述: 系统包括,员工管理,奖惩管理,合同管理,薪酬管理,培训管理,绩效评估等功能...
如何使用 Apt-Get 和 Apt-Cache 在 Ubuntu 和 Debian 中管理软件包
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Apt 是 dpkg 打包系统的命令行前端,也是许多发行版中管理软件的首选方式。它是 Debian 及基于 Debian 的 Linux 发行版…...
Linux系统创建新分区并挂载的方法
一、引言 本文以CentOS为例讲述Linux系统创建新分区并挂载的方法。如下图所示,用fdisk -l命令可以看到该CentOS系统下有一个磁盘/dev/vda,其容量为2199G,即2T。该磁盘有两个分区:vda1和vda2: 用lsblk命令可以查看到磁…...
反射第二弹:用注册器动态注册(用自定义的注解标注的)策略,实现策略模式的设计
目录 引言 设计思路: 代码实现: 标注注解:@StrategyClass 扫描注解:trategyScan 注册器抽象类: 动态策略注册类: AOP类: 总结: 引言 曾经有人问我,假如有一个业务或者数据处理逻辑,会根据甲方客户繁杂的业务需求,而动态变化,该怎么处理,具体怎么实现? 将…...
【Xcode Command Line Tools】安装指南
安装指令 xcode-select --install安装 完成安装 验证 $ xcode-select -p /Library/Developer/CommandLineTools...
springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数
springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数。近期网站经常有人恶意访问,提交了很多垃圾信息。为了屏蔽这类灌水帖,打算屏蔽ip地址,限制24小时内只能访问1次某个接口。下面是测试的案例代码内容。 1:首先&am…...
【大模型理论篇】大模型相关的周边技术分享-关于《NN and DL》的笔记
本文所要介绍的一本书《Neural Networks and Deep Learning》,该书作者Michael Nielsen,Y Combinator Research的研究员,是多年之前自己看的一本基础书籍,很适合入门了解一些关于深度学习的概念知识,当然也包含了一些小…...
CSS 圆形边框与阴影
目录 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影...
Bianchi模型、python计算及ns3验证
由于项目与学习需要,最近学习了bianchi模型,并在python中进行了公式->代码的转化,仿真结果与ns3结果对比。 本文更多的是理解模型各个部分的含义、把各个简单的推导过程转化为python、ns3对比: 1 理论吞吐与传输概率、传输成功概率、包长、速率、排队时间、成功传输时…...
SQL常用语法
SQL(Structured Query Language)是一种用于存储、操作和检索数据库中数据的标准编程语言。以下是一些常用的 SQL 语法: 数据库操作 创建数据库:CREATE DATABASE database_name;删除数据库:DROP DATABASE database_name…...
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
浏览器前端向后端提供服务
WEB后端向浏览器前端提供服务是最常见的场景,前端向后端的接口发起GET或者POST请求,后端收到请求后执行服务器端任务进行处理,完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼? 说来话长,长话短说。我在人…...
文本到语音或视频的构想
₦X8s43Y1iIquVAeF₦ 在Python中,有几个库和模块可以用来实现文本到语音的转换,并且可以生成带有背景音乐的视频。以下是一些可用的库: 1. pyttsx3:这是一个离线文本到语音转换库,它支持多种语音引擎,不依…...
请解释一下数据库的分区和分片?请解释一下数据库的日志和日志的重要性?
请解释一下数据库的分区和分片? 数据库的分区和分片是两种用于提高数据库性能和可扩展性的技术,它们各自具有不同的特点和应用场景。以下是对这两种技术的详细解释: 一、数据库分区 定义: 数据库分区是将一个大型的数据库表或索…...
专业解析开源AI浏览器助手:Page Assist的深度技术架构与实战应用
专业解析开源AI浏览器助手:Page Assist的深度技术架构与实战应用 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist Page Assist是一款革…...
如何快速掌握Winhance中文版:Windows优化终极指南
如何快速掌握Winhance中文版:Windows优化终极指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...
3步完成Python界面设计:可视化拖拽工具完全指南
3步完成Python界面设计:可视化拖拽工具完全指南 【免费下载链接】tkinter-helper 为tkinter打造的可视化拖拽布局界面设计小工具 项目地址: https://gitcode.com/gh_mirrors/tk/tkinter-helper 还在为Python界面开发而烦恼吗?手动编写Tkinter代码…...
Excel插件E灵实战:把杂乱的家庭成员明细表,一键变成规整的‘一户一档’报表
Excel插件E灵实战:从杂乱数据到专业报表的智能转换 在日常办公中,我们经常需要处理各种家庭成员信息表,这些原始数据往往杂乱无章,包含重复、缺失或不规范的记录。传统的手工整理方式不仅耗时费力,还容易出错。本文将详…...
3步零编程定制你的Windows系统:Windhawk终极指南
3步零编程定制你的Windows系统:Windhawk终极指南 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 想要个性化Windows界面却不懂编程ÿ…...
从PCB走线到连接器:手把手教你用ADS仿真优化S参数(避坑SI/PI设计)
从PCB走线到连接器:用ADS仿真优化S参数的实战指南 在高速数字电路和射频设计中,S参数就像设计师的"体检报告",直观反映信号传输路径的健康状况。想象一下,当你设计的PCIe Gen4接口在实验室测试时出现信号完整性问题&am…...
开发者必备:从聊天记录到结构化知识库的自动化工具实践
1. 项目概述:一个面向开发者的轻量级对话记录工具最近在整理几个开源项目的技术讨论记录时,我又一次陷入了混乱。Slack、Discord、Telegram、微信……不同平台的聊天记录散落各处,格式五花八门,想回溯一个关键的技术决策或一个报错…...
Cool-Request全局请求头配置终极指南:告别重复配置的API测试新体验
Cool-Request全局请求头配置终极指南:告别重复配置的API测试新体验 【免费下载链接】cool-request IDEA API、Java Method debug tools 项目地址: https://gitcode.com/gh_mirrors/co/cool-request 你是否厌倦了在每个API请求中重复配置相同的认证Token、内容…...
如何高效使用大麦网抢票脚本:5分钟快速上手终极指南
如何高效使用大麦网抢票脚本:5分钟快速上手终极指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪的演唱会门票而烦恼吗?面对秒光的票源和昂贵的黄牛票…...
星露谷物语SMAPI模组加载器:从零开始打造你的专属农场世界
星露谷物语SMAPI模组加载器:从零开始打造你的专属农场世界 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 还在为星露谷物语的模组安装而烦恼吗?每次看到心仪的模组却因为复杂…...
