系列文章目录

实践数据湖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.exampleimport 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 catalogval tablePath = "hdfs:///user/hive/warehouse/iceberg_db/iceberg_table"// hive catalogval env = StreamExecutionEnvironment.getExecutionEnvironmentSystem.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 |wc5000   39995  994818
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc26226  209803 5269123
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc3578   28619  711840
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc3403   27219  677015
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc3213   25699  639205
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc3029   24227  602589
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc2713   21699  539705
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc26226  209803 5269123
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc2200   17595  437618
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata |wc26226  209803 5269123
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc1703   13619  338715
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc22     171    4194
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc22     171    4194
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc22     171    4194
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc25344  202747 5102415
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc24937  199491 5025486
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc22     171    4194
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc24447  195571 4932870
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc23667  189331 4785445
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc20402  163211 4168329
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc8716   69723 1751708
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc8716   69723 1751708
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/metadata|wc8716   69723 1751708
[root@hadoop103 hadoop]#    hadoop fs -ls hdfs://ns/user/hive/warehouse/hive_catalog6/iceberg_db6.db/behavior_log_ib6/data |wc22     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)。

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

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

实践数据湖iceberg 第十课 快照删除相关推荐

  1. 实践数据湖iceberg 第十四课 元数据合并(解决元数据随时间增加而元数据膨胀的问题)

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  2. 实践数据湖iceberg 第二十四课 iceberg元数据详细解析

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  3. 实践数据湖iceberg 第十二课 catalog是什么

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  4. 实践数据湖iceberg 第二十一课 flink1.13.5 + iceberg0.131 CDC(测试成功INSERT,变更操作失败)

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  5. 实践数据湖iceberg 第五课 hive catalog特点

    系列文章目录 @[TOC](文章目录) 前言 不以完美记录做为目标.以记录自己学习过程为主线,进行记录,记录通过实践,来了解原理,并把这个实践过程分享给后来需要学习的同学. 本节:了解hive cat ...

  6. 实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  7. 实践数据湖iceberg 第九课 合并小文件

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  8. 实践数据湖iceberg 第三十七课 kakfa写入iceberg的 icberg表的 enfource ,not enfource测试

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

  9. 数据湖Iceberg | 实时数据仓库的发展、架构和趋势

    数据处理现状:当前基于Hive的离线数据仓库已经非常成熟,数据中台体系也基本上是围绕离线数仓进行建设.但是随着实时计算引擎的不断发展以及业务对于实时报表的产出需求不断膨胀,业界最近几年就一直聚焦并探索 ...

  10. 数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比

    文章目录 Flink兼容Iceberg目前不足和Iceberg与Hudi对比 一.Flink兼容Iceberg目前不足 二.Iceberg与Hudi对比 Flink兼容Iceberg目前不足和Iceb ...

最新文章

  1. Hyperloop 让发布简洁高效
  2. 【BOOM】一款有趣的Javascript动画效果
  3. 面向对象技术第一讲 多态性
  4. NUS 联合 Sea AI Lab 发表 Multi-view Pose Transformer,完全端到端学习,超强可扩展性...
  5. 7-34 点赞 (20 分)
  6. [译] 如何在安卓应用中使用 TensorFlow Mobile
  7. hibernate延迟加载,LazyInitializationException session失效问题。多数据源配置
  8. 【POJ1064】Cable master(二分搜索+浮点判断处理)
  9. matlab生成chirp信号,chirp信号(chirp信号的产生)
  10. Centos7 设置环境变量
  11. 情迁QQ机器人新增的茉莉词库功能调教
  12. PySide2 QCheckBox控件应用
  13. n1装linux系统升级,N1 降级刷机救砖总结
  14. 中科院信工所雏鹰团队在SemEval上大显神威
  15. 超链接一般有两种表现形式_超级链接有哪些常见的表现形式?
  16. 拼多多店铺流量解析:这些流量入口你必须了解!
  17. 磁盘,分区,文件系统
  18. AMS1117的输入电压范围
  19. web前端开发基础知识_薪资30K+的web前端怎么做到的?
  20. 校长娱乐-我叫MT高级技能出处

热门文章

  1. Android 检测手机是否是异形屏,刘海屏,水滴屏,挖孔屏
  2. Layui 后台ajax 腾讯地图 多点标记mark
  3. 罗振宇2017跨年演讲:我们这代人的机会在哪里?
  4. God.org单域环境攻略(一)
  5. 正则表达式有多强大一看便知!
  6. linux u盘启动系统教程视频教程,如何用u盘启动linux系统教程
  7. 别再傻傻分不清 AVSx H.26x MPEG-x 了
  8. java 将多个文件打包成压缩包下载
  9. 园区人工智能开启双创模式,“1+N”创新型组织发展成效初显
  10. 腊八节福利送上 , 抽奖活动来啦!5本SpringMVC+MyBatis相关、3本Android Studio相关、6本Kafka相关