更新时间:2024-05-28 GMT+08:00

Hudi表概述

Hudi表类型

  • Copy On Write

    写时复制表也简称cow表,使用parquet文件存储数据,内部的更新操作需要通过重写原始parquet文件完成。

    • 优点:读取时,只读取对应分区的一个数据文件即可,较为高效。
    • 缺点:数据写入的时候,需要复制一个先前的副本再在其基础上生成新的数据文件,这个过程比较耗时。且由于耗时,读请求读取到的数据相对就会滞后。
  • Merge On Read

    读时合并表也简称mor表,使用列格式parquet和行格式Avro两种方式混合存储数据。其中parquet格式文件用于存储基础数据,Avro格式文件(也可叫做log文件)用于存储增量数据。

    • 优点:由于写入数据先写delta log,且delta log较小,所以写入成本较低。
    • 缺点:需要定期合并整理compact,否则碎片文件较多。读取性能较差,因为需要将delta log和老数据文件合并。

Hudi表存储

Hudi在写入数据时会根据设置的存储路径、表名、分区结构等属性生成Hudi表。

Hudi表的数据文件,可以使用操作系统的文件系统存储,也可以使用HDFS这种分布式的文件系统存储。为了后续分析性能和数据的可靠性,一般使用HDFS进行存储。以HDFS存储来看,一个Hudi表的存储文件分为两类。

登录FusionInsight Manager页面,选择“集群 > 服务 > HDFS”,在“概览”页面单击NameNode WebUI后的链接,进入到HDFS的WebUI界面,选择“Utilities > Browse the file system”,即可查看Hudi表。

  • “.hoodie”文件夹中存放了对应的文件合并操作相关的日志文件。

  • 包含_partition_key相关的路径是实际的数据文件和metadata,按分区存储。

    Hudi的数据文件使用Parquet文件格式的base file和Avro格式的log file存储。