优化-iceberg调参优化
一、建表优化
1、iceberg表支持更新操作。
文档:https://iceberg.apache.org/docs/latest/configuration/
功能描述:因v1只支持insert,如果有更新场景,则需要建表时指定format为V2版本
参数:'format-version'='2'
CREATE TABLE data_lake_ods.test3 (
`id` int ,
`empcode` STRING
) USING iceberg
TBLPROPERTIES(
'format-version'='2'
);
2、建表时设置metadata.json保留版本个数
功能描述:每次插入数据都会生成一个metadata文件,插入次数太多会影响查询,所以设置保留版本个数
详细介绍和测试文档:Iceberg元数据合并-metadata.json文件
CREATE TABLE data_lake_ods.test3 (
`id` int ,
`empcode` STRING
) USING iceberg
TBLPROPERTIES(
'format-version'='2'
,'write.metadata.delete-after-commit.enabled'='true'
,'write.metadata.previous-versions-max'='3'
);
--插入和更新数据
insert into table iceberg_test.test3 values (1,"code1");
update iceberg_test.test3 set empcode='code2' where id=1;
3、删表时指定清理方式-定制
功能描述:默认drop table 不会清理hdfs数据,使用官方 DROP TABLE spark_catalog.db.sample PURGE时会清理数据,但是还留存【表/data】、【表/metadata】文件。
因社区主干分支不支持,需要使用特定的包结合社区1.3.1代码合并,其他版本也可以。
使用方式:
!!!使用优化后的icebrg包
在建表时需要开启'table.drop.base-path.enabled'='true'
删表时:DROP TABLE spark_catalog.iceberg_test.test3 PURGE
修改包:iceberg-spark-runtime-3.2_2.12-1.3.1.jar
社区提交代码:https://github.com/apache/iceberg/pull/1839/files
官方ddl文档:https://iceberg.apache.org/docs/1.3.1/spark-ddl/
备注:iceberg0.13.1 需要使用SparkCatalog才可以删除数据,iceberg1.3.1使用SparkCatalog、SparkSessionCatalog都可以操作。
CREATE TABLE iceberg_test.test3 (
`id` int ,
`empcode` STRING
) USING iceberg
TBLPROPERTIES(
'format-version'='2'
,'write.metadata.delete-after-commit.enabled'='true'
,'write.metadata.previous-versions-max'='3'
,'table.drop.base-path.enabled'='true'
);
二、元数据治理-存储过程
官网文档:https://iceberg.apache.org/docs/latest/spark-procedures/
1、合并小文件(spark-sql)
详细测试使用文档:Iceberg小文件合并测试
如果是大表,则先执行max-file-group-size-bytes=1的把删除文件合并,max-concurrent-file-group-rewrites设置为maxExecutors个数
CALL spark_catalog.system.rewrite_data_files(
table => 'iceberg_test.order_info1',
options => map(
'max-concurrent-file-group-rewrites','15',
'max-file-group-size-bytes','1',
'rewrite-all','true'
)
);
|
然后再执行,开始真正合并小文件(分组大小1GB)
CALL spark_catalog.system.rewrite_data_files(
table => 'iceberg_test.order_info1',
options => map(
'max-concurrent-file-group-rewrites','1',
'max-file-group-size-bytes','1073741824',
'target-file-size-bytes','67108864',
'rewrite-all','true'
)
);
其它优化参数
(1)rewrite-job-order=bytes-asc
说明:根据该值强制指定重写作业顺序
bytes-asc:则首先重写最小的作业组。
bytes-desc:则首先重写最大的作业组。
files-asc:则首先重写文件最少的作业组。
files-desc:则首先重写文件最多的作业组。
none(默认):则按照计划的顺序重写作业组(无特定顺序)。
(2)target-file-size-bytes
说明:目标输出文件大小
默认值:536870912(512 MB)
可以修改成:67108864(64MB)
2、删除过期快照(合并小文件后文件还不会清理,需要执行删除过期快照命令,这样才真正删除数据文件)
CALL spark_catalog.system.expire_snapshots(table => 'iceberg_test.order_info1', older_than => TIMESTAMP '2023-12-07 10:40:00.000');
参考文章:
1、Spark 合并 Iceberg 小文件内存溢出问题定位和解决方案
https://xie.infoq.cn/article/50259945d7663d7194a5e2763
2、通过flink、spark优化iceberg表小文件项目
优化-iceberg调参优化的更多相关文章
- 小白学习Spark系列六:Spark调参优化
前几节介绍了下常用的函数和常踩的坑以及如何打包程序,现在来说下如何调参优化.当我们开发完一个项目,测试完成后,就要提交到服务器上运行,但运行不稳定,老是抛出如下异常,这就很纳闷了呀,明明测试上没问题, ...
- pytorch 优化器调参
torch.optim 如何使用optimizer 构建 为每个参数单独设置选项 进行单次优化 optimizer.step() optimizer.step(closure) 算法 如何调整学习率 ...
- JVMGC+Spring Boot生产部署和调参优化
一.微服务开发完成,IDEA进行maven clean和package 出现BUILD SUCCESS说明打包成功 二.要求微服务启动时,配置JVM GC调优参数 p.p1 { margin: 0; ...
- XGboost数据比赛实战之调参篇(完整流程)
这一篇博客的内容是在上一篇博客Scikit中的特征选择,XGboost进行回归预测,模型优化的实战的基础上进行调参优化的,所以在阅读本篇博客之前,请先移步看一下上一篇文章. 我前面所做的工作基本都是关 ...
- 听说你不会调参?TextCNN的优化经验Tricks汇总
前言:本篇是TextCNN系列的第三篇,分享TextCNN的优化经验 前两篇可见: 文本分类算法TextCNN原理详解(一) TextCNN代码详解(附测试数据集以及GitHub 地址)(二) 调优模 ...
- DeepMind提出新型超参数最优化方法:性能超越手动调参和贝叶斯优化
DeepMind提出新型超参数最优化方法:性能超越手动调参和贝叶斯优化 2017年11月29日 06:40:37 机器之心V 阅读数 2183 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...
- 工程能力UP | LightGBM的调参干货教程与并行优化
这是个人在竞赛中对LGB模型进行调参的详细过程记录,主要包含下面六个步骤: 大学习率,确定估计器参数n_estimators/num_iterations/num_round/num_boost_ro ...
- MySQL 调优/优化的 100 个建议
MySQL 调优/优化的 100 个建议 MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...
- (转)/etc/sysctl.conf 调优 & 优化Linux内核参数
/etc/sysctl.conf 调优 & 优化Linux内核参数 from: http://apps.hi.baidu.com/share/detail/15652067 http://ke ...
- scrapy框架的日志等级和请求传参, 优化效率
目录 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 请求传参 如何提高scripy的爬取效率 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 在使 ...
随机推荐
- stylus图床
- AI让照片跳舞,人人都能是舞王!Swan下载介绍
最近,兵马俑.马斯克以及各地网友跳科目三和网红舞的视频陆续在社交媒体和朋友圈刷屏,这些大约10秒左右的视频都不是真人出镜,均由大模型生成,这种低门槛的跳舞方式引发了网友的广泛体验,掀起了一波斗舞狂潮「 ...
- 【3分钟学会】一招禁用表单中input输入框回车键自动触发提交事件!
知其然知其所以然 在前端项目开发中,偶尔会有表单提交的问题: 用户输入表单后,不小心按了回车键,导致提前触发了提交事件? 问题概述 当表单中仅有一个input输入框时,按下回车键就会自动触发提交事件, ...
- whisper v3 finetune 中文乱码问题的解决方案
最近学习了一下whisper的微调,主要是参考了github上的夜雨飘零大神项目.但是在操作中遇到了微调中文的时候出现了乱码的情况.以下是我这边对于微调过程中中文出现乱码情况的解决方案. 出现情况如下 ...
- 编写bash脚本快速kill或启动tomcat
假设tomcat安装路径为 /home/tomcat,示例如下: 1. kill tomcat进程 vim kill-tomcat-force.sh set fileformat=unix path ...
- 【Web前端】【疑难杂症】轮播图图片自适应显示问题(bootstrap3轮播图)
关键代码 html <!-- 轮播图开始--> <div id="header" class="carousel slide"> < ...
- 【报错解决】【人工智能】【深度学习】验证cuda和tensorflow之间的版本对应关系时遇到的问题
验证环境B 验证成功,没有问题 验证环境A 得到结果false 检查是否与CUDA关联成功 tf.test.is_built_with_cuda() 发现没有关联成功 根据查询可知道,失败的原因是1. ...
- 如何用source和source结合cat << EOF 和EOF )实现template.txt模板文件变量的替换
使用 source 和 cat << EOF 来实现 template.txt 模板文件变量的替换,你可以按照以下步骤操作: 创建 config.env 文件:包含变量定义. 创建 tem ...
- 鸿蒙OS开发秘籍:打造优雅的登录状态管理系统
一.前言 在鸿蒙OS开发过程中,随着应用规模的扩大,登录状态管理逐渐成为系统设计中的一个挑战.一个清晰.高效的登录状态管理系统不仅可以简化开发流程,还能提升用户体验.本文将分享一种优雅的登录状态管理设 ...
- 一句话,我让 AI 帮我做了个 P 图网站!
每到过节,不少小伙伴都会给自己的头像 P 个图,加点儿装饰. 比如圣诞节给自己头上 P 个圣诞帽,国庆节 P 个小红旗等等.这是一类比较简单.需求量却很大的 P 图场景,也有很多现成的网站和小程序,能 ...