实践数据湖iceberg 第十课 快照删除

您所在的位置:网站首页 历史快照查询 实践数据湖iceberg 第十课 快照删除

实践数据湖iceberg 第十课 快照删除

2023-10-10 00:29| 来源: 网络整理| 查看: 265

系列文章目录

实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7) 实践数据湖iceberg 第五课 hive catalog特点 实践数据湖iceberg 第六课 从kafka写入到iceberg失败问题 解决 实践数据湖iceberg 第七课 实时写入到iceberg 实践数据湖iceberg 第八课 hive与iceberg集成 实践数据湖iceberg 第九课 合并小文件 实践数据湖iceberg 第十课 快照删除

文章目录 系列文章目录前言1.基于hive的catalog,对表进行小文件合并代码2. 合并运行过程3.是否能多次合并?总结

前言 如第九课所讲,对文件进行合并,只是生成新的合并文件和快照文件,没有对原来的小文件进行删除。 本节,测试一下旧的数据删除,删旧数据,需要通过删旧快照进行,详情请看下文 1.基于hive的catalog,对表进行小文件合并代码 package org.example import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment import org.apache.hadoop.conf.Configuration import org.apache.iceberg.catalog.{Namespace, TableIdentifier} import org.apache.iceberg.flink.{CatalogLoader, TableLoader} import org.apache.iceberg.flink.actions.Actions import org.apache.log4j.{Level, Logger} import org.slf4j.LoggerFactory import java.util import java.util.concurrent.TimeUnit object FlinkDataStreamSmallFileCompactTest { private var logger: org.slf4j.Logger = _ def main(args: Array[String]): Unit = { logger = LoggerFactory.getLogger(this.getClass.getSimpleName) Logger.getLogger("org.apache").setLevel(Level.INFO) Logger.getLogger("hive.metastore").setLevel(Level.WARN) Logger.getLogger("akka").setLevel(Level.WARN) // hadoop catalog val tablePath = "hdfs:///user/hive/warehouse/iceberg_db/iceberg_table" // hive catalog val env = StreamExecutionEnvironment.getExecutionEnvironment System.setProperty("HADOOP_USER_NAME", "root") val map = new util.HashMap[String,String]() map.put("type", "iceberg") map.put("catalog-type", "hive") map.put("property-version", "2") map.put("/warehouse", "/user/hive/warehouse") // map.put("datanucleus.schema.autoCreateTables", "true") // 压缩小文件 // 快照过期处理 map.put("uri", "thrift://hadoop101:9083") val iceberg_catalog = CatalogLoader.hive( "hive_catalog6",//catalog名称 new Configuration(), new util.HashMap() ) val identifier = TableIdentifier.of(Namespace.of("iceberg_db6"), //db名称 "behavior_log_ib6")//表名称 val loader = TableLoader.fromCatalog(iceberg_catalog, identifier) loader.open() val table = loader.loadTable() Actions.forTable(env, table) .rewriteDataFiles .maxParallelism(5) .targetSizeInBytes(128 * 1024 * 1024) .execute // 清除历史快照 val snapshot = table.currentSnapshot // val old = snapshot.timestampMillis - TimeUnit.MINUTES.toMillis(5) if (snapshot != null) { table.expireSnapshots .expireOlderThan(snapshot.timestampMillis) .commit() } } } 2. 合并运行过程

以下输出是,每间隔几秒执行一次 data目录最开始是17978 个,执行一段时间后,才执行查询命令 分析日志:先合并data目录,再合并medata目录,data的文件个数由17978->22个,metadata有26226->8716。 metadata是否还能继续合并?

[root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 5000 39995 994818 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc 26226 209803 5269123 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 3578 28619 711840 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 3403 27219 677015 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 3213 25699 639205 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 3029 24227 602589 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 2713 21699 539705 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc 26226 209803 5269123 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 2200 17595 437618 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc 26226 209803 5269123 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 1703 13619 338715 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 22 171 4194 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 22 171 4194 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 22 171 4194 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 25344 202747 5102415 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 24937 199491 5025486 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 22 171 4194 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 24447 195571 4932870 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 23667 189331 4785445 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 20402 163211 4168329 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 8716 69723 1751708 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 8716 69723 1751708 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc 8716 69723 1751708 [root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc 22 171 4194

合并后,data的内容:

[root@hadoop103 hadoop]# hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data Found 21 items -rw-r--r-- 2 root supergroup 173182 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00000-0-3c21e5b1-54e8-42b1-8bdc-a0b8f1514ee1-00001.parquet -rw-r--r-- 2 root supergroup 173037 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00000-0-3c21e5b1-54e8-42b1-8bdc-a0b8f1514ee1-00002.parquet -rw-r--r-- 2 root supergroup 173149 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00000-0-3c21e5b1-54e8-42b1-8bdc-a0b8f1514ee1-00003.parquet -rw-r--r-- 2 root supergroup 3302206 2022-01-27 14:38 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00000-0-cdcc5019-0c59-41e4-80c6-1d4185455065-00001.parquet -rw-r--r-- 2 root supergroup 508 2022-01-26 11:35 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00000-0-dd8bc29f-831a-4904-830e-2ef56e4a4743-08707.parquet -rw-r--r-- 2 root supergroup 173032 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00001-0-139af0f5-d3ee-4f35-bd2e-73ce2aaf4792-00001.parquet -rw-r--r-- 2 root supergroup 173113 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00001-0-139af0f5-d3ee-4f35-bd2e-73ce2aaf4792-00002.parquet -rw-r--r-- 2 root supergroup 173124 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00001-0-139af0f5-d3ee-4f35-bd2e-73ce2aaf4792-00003.parquet -rw-r--r-- 2 root supergroup 552 2022-01-26 11:35 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00001-0-e9e8a782-fa82-4c4d-9786-c05b8aab251a-08707.parquet -rw-r--r-- 2 root supergroup 5995 2022-01-27 11:52 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00002-0-a0f46641-b14d-4f8b-a16e-4c768bcba775-00109.parquet -rw-r--r-- 2 root supergroup 173153 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00002-0-fe001b68-3753-44a7-adb4-63d43c8b3226-00001.parquet -rw-r--r-- 2 root supergroup 168653 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00002-0-fe001b68-3753-44a7-adb4-63d43c8b3226-00002.parquet -rw-r--r-- 2 root supergroup 173288 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00002-0-fe001b68-3753-44a7-adb4-63d43c8b3226-00003.parquet -rw-r--r-- 2 root supergroup 173023 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00002-0-fe001b68-3753-44a7-adb4-63d43c8b3226-00004.parquet -rw-r--r-- 2 root supergroup 173223 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00003-0-1d71db79-abf1-4088-9282-bc907e45e262-00001.parquet -rw-r--r-- 2 root supergroup 173039 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00003-0-1d71db79-abf1-4088-9282-bc907e45e262-00002.parquet -rw-r--r-- 2 root supergroup 172976 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00003-0-1d71db79-abf1-4088-9282-bc907e45e262-00003.parquet -rw-r--r-- 2 root supergroup 172950 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00003-0-1d71db79-abf1-4088-9282-bc907e45e262-00004.parquet -rw-r--r-- 2 root supergroup 540168 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00004-0-fea6f5d5-759f-4769-9ced-b3ecca214e36-00001.parquet -rw-r--r-- 2 root supergroup 173059 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00004-0-fea6f5d5-759f-4769-9ced-b3ecca214e36-00002.parquet -rw-r--r-- 2 root supergroup 172866 2022-01-27 14:16 hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data/00004-0-fea6f5d5-759f-4769-9ced-b3ecca214e36-00003.parquet 3.是否能多次合并?

只跑删快照代码,发现删不动了。 在这里插入图片描述 合并代码继续跑,发现不再合并(跑了几次都是这样) 在这里插入图片描述

总结

数据文件减少明显,metadata还存在很多,没法减少(只减少为原来的1/3),经过分析删除的是snapshot文件和manifiest文件,metadata.json没有删除(剩余没删掉的就是metadata.json)。

表数据没有变化的情况下,多次进行合并的效果跟合并一次是一样的。

有个疑问:对于分区表的小文件删除,是怎样的呢?能否支持基于分区进行合并? 请看下一课



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3