一、背景描述

元数据文件随时间增多,导致查询变慢。通过如下方式可以指定metadata个数,超过指定数量自动清理。

metadata文件对应Iceberg概念是Snapshots

二、解决方案

1、在建表时增加参数

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

2、建表语句

自动清理metadata文件
CREATE TABLE iceberg_test.autoclean_usql_test(
`id` BIGINT,
`name_cn` STRING,
`description` STRING,
`status` INT
)USING iceberg
TBLPROPERTIES(
'format-version'='2'
,'property-version'='2'
,'write.upsert.enabled'='true'
,'write.metadata.delete-after-commit.enabled'='true'
,'write.metadata.previous-versions-max'='5'
) 不带metadata自动清理
CREATE TABLE iceberg_test.notclean_usql_test(
`id` BIGINT,
`name_cn` STRING,
`description` STRING,
`status` INT
)USING iceberg
TBLPROPERTIES(
'format-version'='2'
,'property-version'='2'
,'write.upsert.enabled'='true')
 

3、存储路径

/user/hive/warehouse/iceberg_test.db/autoclean_usql_test

三、插入数据测试

1、带metadata清理测试,因保留5个,第六次插入才清理

插入数据,查看生成的文件数量。查看命令如下

hdfs dfs -ls /user/hive/warehouse/iceberg_test.db/autoclean_usql_test/metadata |grep 'Found'

insert into iceberg_test.autoclean_usql_test values(1,'name1','desc',1);    Found 4 items    2个metadata.json   1个*m0.avro    1个***.avro
insert into iceberg_test.autoclean_usql_test values(2,'name2','desc',1); Found 7 items 3个metadata.json 2个*m0.avro 2个***.avro
insert into iceberg_test.autoclean_usql_test values(3,'name3','desc',1); Found 10 items 4个metadata.json 3个*m0.avro 3个***.avro
insert into iceberg_test.autoclean_usql_test values(4,'name4','desc',1); Found 13 items 5个metadata.json 4个*m0.avro 4个***.avro
insert into iceberg_test.autoclean_usql_test values(5,'name5','desc',1); Found 16 items 6个metadata.json 5个*m0.avro 5个***.avro
---开始清理生效
insert into iceberg_test.autoclean_usql_test values(6,'name6','desc',1); Found 18 items 6个metadata.json 6个*m0.avro 6个***.avro
insert into iceberg_test.autoclean_usql_test values(7,'name7','desc',1); Found 20 items 6个metadata.json 7个*m0.avro 7个***.avro

2、不带metadata清理,每次增加三个,一直增加。

hdfs dfs -ls /user/hive/warehouse/iceberg_test.db/notclean_usql_test/metadata

insert into iceberg_test.notclean_usql_test values(1,'name1','desc',1); Found 4 items    2个metadata.json   1个*m0.avro    1个***.avro
insert into iceberg_test.notclean_usql_test values(2,'name2','desc',1); Found 7 items 3个metadata.json 2个*m0.avro 2个***.avro
insert into iceberg_test.notclean_usql_test values(3,'name3','desc',1); Found 10 items 4个metadata.json 3个*m0.avro 3个***.avro
insert into iceberg_test.notclean_usql_test values(4,'name4','desc',1); Found 13 items 5个metadata.json 4个*m0.avro 4个***.avro
insert into iceberg_test.notclean_usql_test values(5,'name5','desc',1); Found 16 items 6个metadata.json 5个*m0.avro 5个***.avro
insert into iceberg_test.notclean_usql_test values(6,'name6','desc',1); Found 19 items 7个metadata.json 6个*m0.avro 6个***.avro
insert into iceberg_test.notclean_usql_test values(7,'name7','desc',1); Found 22 items 8个metadata.json 7个*m0.avro 7个***.avro

四、参考文章

1、实践数据湖iceberg 元数据合并

https://blog.csdn.net/spark_dev/article/details/122876819

表治理-Iceberg元数据合并-metadata.json文件的更多相关文章

  1. 第九篇 数据表设计和保存item到json文件

    上节说到Pipeline会拦截item,根据设置的优先级,item会依次经过这些Pipeline,所以可以通过Pipeline来保存文件到json.数据库等等. 下面是自定义json #存储item到 ...

  2. asp.net core2.1 bundleconfig.json合并压缩资源文件

    在asp.net core中则可以使用BuildBundlerMinifier来进行css,js的压缩合并 1.使用NuGet安装 BuildBundlerMinifier(也可以在vs中下载安装扩展 ...

  3. Python实现读取json文件到excel表

    一.需求 1.'score.json' 文件内容: { "1":["小花",99,100,98.5], "2":["小王" ...

  4. JavaScript自学笔记(1)---表单验证,let和const,JSON文件

    今天开个JS自学笔记,本身JS的语法很简单,如果学过Java或者C系的都很容易,就不讨论了.主要是讨论实际应用的问题. 1.表单验证: a.html自动验证: HTML 表单验证可以通过浏览器来自动完 ...

  5. 数据治理之元数据管理的利器——Atlas入门宝典

    随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为Hadoop生态最紧密的元数据管理与发现工具,Atlas在其中扮演着重要的位置.但是其官方文档不是很丰富,也不够详细.所以整 ...

  6. ios项目里扒出来的json文件

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...

  7. 让EFCore更疯狂些的扩展类库(一):通过json文件配置sql语句

    前言 EF通过linq和各种扩展方法,再加上实体模型,编写数据库的访问代码确实是优美.舒服,但是生成的sql不尽如意.性能低下,尤其是复杂些的逻辑关系,最终大家还是会回归自然,选择能够友好执行sql语 ...

  8. Angular Npm Package.Json文件详解

    Angular7 Npm Package.Json文件详解   近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...

  9. java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中

    1.项目介绍: 由于大数据部门涉及到其他部门将数据传到数据中心,大部分公司采用的方式是用json文件的方式传输,因此就需要编写服务端和客户端的小程序了.而我主要实现服务端的代码,也有相应的客户端的测试 ...

  10. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

随机推荐

  1. Django之添加prometheus监控

    1.首先需要在prometheus.yml配置文件中配置targets: - job_name: "test-server-191" static_configs: - targe ...

  2. Element-UI 中关于 Table 的几个功能点简介(行列的合并和样式、合计行配置等)

    〇.前言 本文记录了关于 Element 框架中 Table 的几个功能点,后续将持续更新. el-table 官网地址:https://element.eleme.cn/#/zh-CN/compon ...

  3. Windows 禁用笔记本键盘

    背景 笔记本键盘+机械键盘组合如下图: 由此产生一个问题: 笔记本键盘现在的用处是什么? 没什么用,那我们何不把桌面的位置利用起来? 这样怎么样? ===> 为了防止放东西时候误触,我们需要把笔 ...

  4. 如何在 duxapp 中开发一个兼容 RN 的动画库

    Taro 一直以来都没有一个能兼容 RN 的动画方案,duxapp 中扩展了 createAnimation 方法,让这个方法兼容了 RN 端,下面让我们来看看实现思路 createAnimation ...

  5. 【C++】static 知识整理 【静态与局部静态】

    目录 类外 类内 局部静态 local static 类外 类内 类外 C++的静态可以分为两种情况来讨论:在类外和在类内. 对于静态变量/函数,链接将只在内部 (如果不用static,那么在不同文件 ...

  6. 【巧用set实现对有序数组O(logn)时间复杂度增、删、查、改、二分操作】codeforces 1041 C. Coffee Break

    题意 第一行输入三个整数 \(n,m,d(1 \leq n \leq 2 * 10^5, n \leq m \leq 10^9, 1 \leq d \leq n)\),第二行输入 \(n\) 个整数, ...

  7. 如何将java私有库(jar)提交至公服/公共仓库(central repository)-手动版

    如何将java私有库(jar)提交至公服/公共仓库(central repository)-手动版 准备 GunPG(用于asc签名) 项目代码(建议是maven结构的) sonatype账号(htt ...

  8. ECShop开源商城与COS互通:降低本地存储负载、提升访问体验

    ECShop简介 ECShop是一款开源电子商务平台,具有简单易用.安全稳定.模块化设计等特点.它提供了完整的电子商务解决方案,包括商品管理.订单管理.支付管理.配送管理.会员管理.促销管理.数据统计 ...

  9. 刚学完Vue收集的库或项目分享

    最近刚看完一个Vue3的视频教程,还不错,整理最近收集与Vue相关的库或项目. awesome-vue:与 Vue.js 相关的精彩内容精选清单.https://github.com/vuejs/aw ...

  10. Restful、SOAP、RPC、SOA、微服务之间的区别-copy

    什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务. 主要的设计原则: 资源与URI ...