Hudi数据表Archive规范
Archive(归档)是为了减轻Hudi读写元数据的压力,所有的元数据都存放在这个路径:Hudi表根目录/.hoodie目录,如果.hoodie目录下的文件数量超过10000就会发现Hudi表有非常明显的读写时延。
规则
Hudi表必须执行Archive。
对于Hudi的MOR类型和COW类型的表,都需要开启Archive。
- Hudi表在写入数据时会自动判断是否需要执行Archive,因为Archive的开关默认打开(hoodie.archive.automatic默认为true)。
- Archive操作并不是每次写数据时都会触发,至少需要满足以下两个条件:
- Hudi表满足hoodie.keep.max.commits设置的阈值。如果是Flink写hudi至少提交的checkpoint要超过这个阈值;如果是Spark写hudi,写Hudi的次数要超过这个阈值。
- Hudi表做过Clean,如果没有做过Clean就不会执行Archive。
建议
Archive作业每天至少执行一次,可以2~4小时执行一次。
Hudi的MOR表和COW表都需要保证每天至少1次Archive,MOR表的Archive可以参考2.2.1.6小节和Compaction放在一起异步去执行。COW的Archive可以在写数据时自动判断是否执行。