Iceberg Spark存储过程-表治理工具
一、简介
存储过程(Procedure)是数据库领域的概念,类似于编程语言中的方法或函数,是对实现特定操作的封装,原生的 Spark SQL 中是不支持存储过程的,Iceberg 0.11.0版本之后对其进行了扩展,并提供了部分存储过程的实现。Iceberg 中提供的所有存储过程都在system namespace 下,分快照管理、元数据管理、表迁移三种。如果需要使用则spark新增如下配置项
spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
二、存储过程使用
1、语法简介
-- 基于参数位置
call catalog_name.system.procedure_name(arg_1, arg_2, ... arg_n);
-- 基于参数名称
call catalog_name.system.procedure_name(arg_name_2 => arg_2, arg_name_1 => arg_1);
三、Iceberg快照管理
1、回滚表到特定的快照ID(rollback_to_snapshot)
(1)参数
table(必须):string,表名
snapshot_id(必须):long,快照 ID
(2)示例
call catalog_name.system.rollback_to_snapshot('db.sample', 1);
2、回滚表到特定时间(rollback_to_timestamp)
(1)参数
table(必须):string,表名
timestamp(必须):long,回滚的时间戳
(2)示例
call catalog_name.system.rollback_to_timestamp('db.sample', TIMESTAMP '2023-12-08 00:00:00.000');
3、设置表的当前快照ID(set_current_snapshot)
与回滚不同,该参数可以在各个快照之间任意穿梭
(1)参数
table(必须):string,表名
snapshot_id(必须):long,快照 ID
(2)示例
call spark_catalog.system.set_current_snapshot('db.sample', 1);
4、从现有快照创建新快照(cherrypick_snapshot)
(1)参数
table(必须):string,表名
snapshot_id(必须):long,快照 ID
四、元数据管理
1、删除过期快照和相关数据文件(expire_snapshots)
(1)参数
table(必须):string,表名
older_than:timestamp,该时间戳之前的快照将被删除,默认为 5 天前
retain_last:int,和 older_than 同时存在的时候,要保留的快照数(默认为 1)
max_concurrent_deletes:int,用于删除文件操作的线程池大小(默认不使用线程池)
(2)示例
CALL spark_catalog.system.expire_snapshots(table => 'db.sample', older_than => TIMESTAMP '2023-12-07 10:40:00.000');
2、删除Iceberg元数据中未被引用的文件(remove_orphan_files)
(1)参数
table(必须):string,表名。
older_than:timestamp,删除在此时间戳之前创建的孤立文件(默认为 3 天前)。
location:string,查找文件的目录(默认为表的位置)。
dry_run:boolean,当为 true 时,实际上不删除文件(默认为 false)。
max_concurrent_deletes:int,用于删除文件操作的线程池大小(默认不使用线程池)。
(2)示例
call spark_catalog.system.remove_orphan_files(table => 'db.sample');
3、合并小文件,加速文件扫描速度(rewrite_data_files)
(1)参数
table(必须):string,表名。
strategy:string,合并策略binpack或sort。默认为binpack。
sort_order:string,用以描述排序方式,多个字段之间用逗号分隔。如:name asc nulls last, age desc nulls first。
options:map<string, string>,用以重写文件时的其它参数。
where:string,指定过滤条件。
(2)例子
CALL spark_catalog.system.rewrite_data_files(
table => 'db.sample',
options => map(
'max-concurrent-file-group-rewrites','1',
'max-file-group-size-bytes','1',
'rewrite-all','true'
)
);
4、重写manifest文件,优化扫描计划(rewrite_manifests)
(1)参数
table(必须):string,表名。
use_caching:boolean,是否使用 Spark 缓存(默认为 true)。
(2)例子
snapshot_id(非必须):long,指定的快照 ID。
五、表迁移
table:string(必须):新表(快照表)表名。
location:string,新表的存储目录,默认有 catalog 管理。
properties:map<string, string>,添加到新表中的属性。
-- 将 db.src_tbl 表(非Iceberg表)中分区 year = 2022 的数据添加到 db.tbl 中
call spark_catalog.system.add_files(
table => 'db.tbl',
source_table => 'db.src_tbl',
partition_filter => map('year', '2022')
)
-- 将 path/to/table 目录中 格式为 parquet 的文件添加到 db.tbl 表中,
call spark_catalog.system.add_files(
table => 'db.tbl',
source_table => '`parquet`.`path/to/table`'
)
Iceberg Spark存储过程-表治理工具的更多相关文章
- [转载]github在线更改mysql表结构工具gh-ost
GitHub正式宣布以开源的方式发布gh-ost:GitHub的MySQL无触发器在线更改表定义工具! gh-ost是GitHub最近几个月开发出来的,目的是解决一个经常碰到的问题:不断变化的产品需求 ...
- 注册表对比工具(Regshot) V2.0.1 中文绿色版
软件名称: 注册表对比工具(Regshot)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / WinXP软件大小: 263KB图片预览: 软件简介:Regshot 是一 ...
- sap表维护工具来维护自定义表&视图簇的使用
一.通过表维护工具维护自定义表 1.SE11创建表 2.se11界面的菜单:实用程序->Table Maintenance Generator其实这里就是调用SE54 3.sm30 调用维护好的 ...
- 时空KSOA之CS表单工具说明
CS表单工具说明 1.调用: 1.1.单据事件调用 runbill_表单sn 调用无窗口表单 loadbill_表单sn 调用窗口表单 1.2.功能调用 功能号:LOADCSBILL 参数表单名称 1 ...
- Java Windows下读取注册表的工具类
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 数据层交换和高性能并发处理(开源ETL大数据治理工具--KETTLE使用及二次开发 )
ETL是什么?为什么要使用ETL?KETTLE是什么?为什么要学KETTLE? ETL是数据的抽取清洗转换加载的过程,是数据进入数据仓库进行大数据分析的载入过程,目前流行的数据进入仓库的 ...
- oracle存储过程代码覆盖率统计工具
目前针对于高级语言如C++,JAVA,C#等工程都有相关的代码覆盖率统计工具,但是对于oracle存储过程或者数据库sql等方面的项目,代码覆盖率统计和扫描工具相对较少. 因此针对这种情况,设计了代码 ...
- sql注入问题-视图-事物-以及存储过程(可视化工具)
可视化工具(了解) 可视化工具 workbench 视图 视图 是一张虚拟的表 语法: create view 视图表名 as select * from t1; 作用: .他是执行as 后面的sql ...
- 存储过程--表变量和while简单运用
1.sql创建表/*订单*/CREATE TABLE Orders ( PRIMARY KEY(Id), Id int, Name varchar(20))2.存储过程ProTestDT 1)创 ...
- mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)
一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表.实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check ...
随机推荐
- 朋友要招几个java,让帮忙出点面试题目
上周朋友说要招几个高级点的java,网上那些java面试宝典已经被人背得熟透了,让帮忙出出几个面试的问题,主要看看对所使用得语言有较深入得了解,不停留在使用什么开源框架,和对自己一些项目得见解.当然还 ...
- python爬虫利器之Playwright
Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium.Pyppeteer 等,都可以驱动浏览器进行各种自动化操作.它的功能也非常强大,对市面上的主 ...
- python之常用开发包
1.passlib (https://passlib.readthedocs.io/en/stable/) passlib 目前常见的不可逆加密算法有以下几种: 一次MD5(使用率很高) 将密码与一个 ...
- 面试官:来谈谈Vue3的provide和inject实现多级传递的原理
前言 没有看过provide和inject函数源码的小伙伴可能觉得他们实现数据多级传递非常神秘,其实他的源码非常简单,这篇文章欧阳来讲讲provide和inject函数是如何实现数据多级传递的.ps: ...
- ESRI资源
AO帮助 http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/: 桌面帮助 10.1:http://resources. ...
- 在Windows下为CodeBlocks20.3安装、配置wxWidget3.2.6
0.前言 CodeBlocks是使用C++编写程序的一个很好的开发环境,最大的好处是它是开源的.免费的,而不仅仅是因为它具有跨平台的能力.还有一个很重要的原因是在CodeBlocks中可以使用wxWi ...
- 关于 K8s 的一些基础概念整理-补充【k8s系列之五】
〇.前言 本文继续整理下 K8s 的一些基础概念,作为前一篇概念汇总的补充. 前一篇博文链接:https://www.cnblogs.com/hnzhengfy/p/k8s_concept.html. ...
- 【Word】文献引用批量上标
\[([0-9]{1,2})\]
- Qt开发经验小技巧256-260
默认QDialog窗体右下角有个拉伸尺寸的手柄,通过它可以对窗体拉伸大小,这个控件很容易被遗忘但是又经常可以看到,他的名字叫QSizeGrip,可以通过setSizeGripEnabled来启用或者禁 ...
- Qt数据库应用2-数据导出到xls
一.前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实战经验中不断调整和优化.尤其记得当初第一个版本v0.01大概在2011年左右 ...