Iceberg常用命令
一、登录spark客户端
spark-sql --master yarn \
--deploy-mode client \
--queue default \
--name wang \
--driver-memory 12G \
--num-executors 10 \
--executor-cores 2 \
--executor-memory 10G
二、sql查询表信息
1、查询表快照信息
SELECT * FROM spark_catalog.data_lake_ods.test_table.snapshots order by committed_at desc
SELECT count(1) FROM spark_catalog.data_lake_ods.test_table.snapshots
2、查询表数据文件
--查询当前快照对应的数据文件
SELECT count(1) FROM data_lake_ods_test.dwd_mkt_uqun_call_detail.data_files
--查询表所有数据文件
SELECT count(1) FROM data_lake_ods_test.dwd_mkt_uqun_call_detail.all_data_files
3、查询删除文件
--查询当前快照对应的删除文件
SELECT count(1) FROM data_lake_ods.test_table.delete_files
--查询所有删除文件
SELECT * FROM data_lake_ods.test_table.all_delete_files
SELECT count(1) FROM data_lake_ods.test_table.all_delete_files
4、查询表快照历史
select * from data_lake_ods.ods_bdg_dp_data_source.history
5、查询manifests
select * from iceberg_catalog.data_lake_ods.ods_bdg_dp_data_source.manifests
三、Iceberg表DDL操作
1、建非分区表
--建表。 布隆筛选建议和主键一样,最多不超过3个
CREATE TABLE data_lake_ods.test123(
changed_type int comment 'null',
id bigint comment 'id',
create_time string comment '创建时间',
update_time string comment '更新时间'
)USING iceberg
TBLPROPERTIES(
'format-version'='2'
,'write.upsert.enabled'='true'
,'engine.hive.enabled'='true'
,'write.distribution-mode' = 'hash'
,'write.metadata.metrics.default'='full'
,'write.parquet.bloom-filter-enabled.column.id' = 'true'
,'table.drop.base-path.enabled'='true'
);
2、建分桶表
--分桶表。布隆筛选建议和主键一样,最多不超过3个
CREATE TABLE spark_catalog.data_lake_ods_test.test_bucket_month (
`order_number` BIGINT COMMENT '订单编号',
`user_number` BIGINT COMMENT '用户编号',
`pay_number` BIGINT COMMENT '支付编号',
`spu_number` BIGINT COMMENT '商品spu编号',
`sku_number` BIGINT COMMENT '商品sku编号',
`kafka_timestamp` TIMESTAMP COMMENT 'kafka写入时间戳'
)USING iceberg
PARTITIONED BY (bucket(12,order_number))
TBLPROPERTIES(
'format-version'='2'
,'write.upsert.enabled'='true'
,'engine.hive.enabled'='true'
,'write.distribution-mode' = 'hash'
,'write.metadata.metrics.default'='full'
,'write.parquet.bloom-filter-enabled.column.id' = 'true'
,'table.drop.base-path.enabled'='true'
);
其它优化参数
TBLPROPERTIES (
'write.merge.mode' = 'merge-on-read',
'write.update.mode' = 'merge-on-read',
'write.delete.mode' ='merge-on-read',
'write.metadata.delete-after-commit.enabled' = 'true',
//保留metadata.json个数,会删除历史的metadata.json,但不会清理snapshot(即manifestList、manifest、data file、delete file都不会清理)
'write.metadata.previous-versions-max' = '10',
);
3、修改表属性
alter table data_lake_ods.test123 SET TBLPROPERTIES('write.metadata.metrics.default'='full','write.distribution-mode' = 'hash');
4、删除表
drop table data_lake_ods.test123 purge;
四、表治理
1、小文件合并(非分区表)
CALL spark_catalog.system.rewrite_data_files(
table => 'data_lake_ods.test123',
options => map(
'partial-progress.enabled', 'true',
'rewrite-job-order', 'bytes-asc',
'partial-progress.max-commits', '10000',
'max-file-group-size-bytes', '1073741824',
'target-file-size-bytes','134217728',
'rewrite-all','true'
)
);
2、小文件合并(分区表)
CALL spark_catalog.system.rewrite_data_files(
table => 'data_lake_ods_test.test123',
options => map(
'partial-progress.enabled', 'true',
'rewrite-job-order', 'bytes-asc',
'partial-progress.max-commits', '10000',
'max-file-group-size-bytes', '1073741824',
'target-file-size-bytes','134217728',
'remove-dangling-deletes','true',
'rewrite-all','true'
)
);
3、治理删除文件特别多的单表(先把删除文件干掉,然后再执行上面治理命令)
CALL spark_catalog.system.rewrite_data_files(
table => 'data_lake_ods.test123',
options => map(
'max-concurrent-file-group-rewrites','19',
'max-file-group-size-bytes','1',
'partial-progress.enabled', 'true',
'rewrite-all','true'
)
);
4、过期快照清理
CALL spark_catalog.system.expire_snapshots(table => 'data_lake_ods.test_table', older_than => TIMESTAMP '2024-04-08 10:00:00.000');
五、表运维
1、spark3.3查询指定时间快照数据
SELECT * FROM data_lake_ods.ods_bdg_dp_data_source TIMESTAMP AS OF '2024-02-29 17:10:31';
SELECT * FROM data_lake_ods.ods_bdg_dp_data_source TIMESTAMP AS OF 499162860;
2、spark3.3查询制定快照数据
SELECT * FROM data_lake_ods.ods_bdg_dp_data_source VERSION AS OF 10963874102873;
3、回滚快照
CALL hadoop_prod.system.rollback_to_timestamp('mydb.mytest', TIMESTAMP '2021-12-23 16:56:40.000')
六、优秀文章
1、网易数帆
https://www.6aiq.com/article/1686471152273
Iceberg常用命令的更多相关文章
- Linux 常用命令(持续补充)
常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【原】npm 常用命令详解
今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...
- npm常用命令
npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...
- Git 常用命令
一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...
- linux iptables常用命令之配置生产环境iptables及优化
在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...
- Linux常用命令(一)
Linux常用命令 1. pwd查看当前路径(Print Working Directory) [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...
- 版本控制-svn服务器搭建和常用命令(centos 6.3)
Svn是比较优秀的版本控制工具,虽然功能和性能上无法和Git媲美,但由于其容易搭建和使用的特性,所以在各个小公司还是很受欢迎的.使用Git可参考<版本控制-Git服务器搭建和常用命令使用> ...
随机推荐
- golang之go-spew
github: https://github.com/davecgh/go-spew 我们在使用Golang(Go语言)开发的过程中,会通过经常通过调试的方式查找问题的原因,解决问题,尤其是当遇到一个 ...
- laravel之model
记录laravel 中model常用方法 1.keyBy() 指定数据的某个字段作为该条数据的key 2.like操作 $model->where('goods', 'like', '%test ...
- docker之网络与数据管理
docker默认使用bridge(单主机互联)和overlay(可跨主机互联)两种网络驱动来进行容器的网络管理.如需要,还可以自定义网络驱动插件进行docker容器的网络管理. 1.docker默认网 ...
- YashanDB V23.3重磅发布,持续深化1:1替代产品力
11月14日,YashanDB在"2024国产数据库创新生态大会"上正式发布YashanDB V23.3版本,定位为面向企业核心的通用数据库,具备1:1替代Oracle的能力. 当 ...
- 在Python工具箱中,创建对应子工具集
目录 问题描述 实现方法 问题描述 在Pro中,新建自定义工具箱后,直接通过操作可以添加工具集. 但是新建python工具箱后,却没有新建的操作.因为python工具箱的对象定义,都是在脚本中定义的, ...
- 零基础学习人工智能—Python—Pytorch学习(十二)
前言 本文介绍使用神经网络进行实战. 使用的代码是<零基础学习人工智能-Python-Pytorch学习(九)>里的代码. 代码实现 mudule定义 首先我们自定义一个module,创建 ...
- Fleck:一个轻量级的C#开源WebSocket服务端库
推荐一个简单易用.轻量级的C#开源WebSocket服务端库,方便我们快速实现WebSocket的开发. 01 项目简介 Fleck 是一个用 C# 编写的轻量级 WebSocket 服务器库.它提供 ...
- JDK 19 对反应式编程的批判
我们知道 JDK 19 引入了虚拟线程,实现了 JEP425 草案,https://openjdk.org/jeps/425 该案对反应式编程的批判可谓犀利: Improving scalabilit ...
- 非root用户使用AntDeploy部署docker
AntDeploy这个东西非常好用,可以直接将.NET CORE的程序直接发布到docker,刚好我有这个需求,但是程序默认给的账户示例是root账户的,需要对于需要分散开发的同学来说,这个东西风险有 ...
- 【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802940.html?templateId=1718516 [问题分类]功能使用 ...