一、基础概念
了解过hudi的新手或者专家都知道,hudi不管是COW还是MOR表,其文件还是存储在hdfs上。因为下来介绍我在学习hudi压缩的一些东西,所以下方就以MOR表文件做下介绍。下方会由浅入深尝试说明压缩计划和压缩策略等等之间的关系。
对文件排列方面,例如FileGroup、FileSlice等概念还未学习的同学可以先从了解这个图后再继续。

可以理解为如果数据文件(若干log和parquet文件)的instantTime一样,那么他们都属于一个fileSlice。fileSlice所以也有FileGroup来标记自己属于哪个分区和自己的ID。
首先是数据文件,分为log文件和data文件。前者是avro格式的,保存较新的数据,而后者是parquet文件,内部数据则是更早或是和log合并后的。下方以一个非压缩非clustering的表文件为例子:

basePath 就是/user/ocdp/test/hudi/mor_noComNoClu。表名字就是mor_noComNoClu。
而后面time_15min则表示hudi表各个分区目录,当前是以系统时间,每15分钟一个分区。
接下来以一个分区为例子:

上方

本文深入探讨了Hudi数据存储的压缩机制,包括基础概念如COW和MOR表、FileGroup、FileSlice等,以及压缩计划和策略。通过代码解读,展示了如何生成压缩计划,强调了合法时间戳验证的重要性,并详细描述了压缩计划的生成过程。此外,还提及了压缩策略的选择及其对文件组织和查询效率的影响。
8379

被折叠的 条评论
为什么被折叠?



