Hudi小文件问题处理和生产调优个人笔记

点击上方蓝色字体,选择“设为星标”

回复"面试"获取更多惊喜

八股文交给我,你们专心刷题和面试

6de3ec15ba56870dbcf728b3e58a61b4.png

Hi,我是王知无,一个大数据领域的原创作者。 

放心关注我,获取更多行业的一手消息。

这个文章是我在浏览Hudi官网以及官方社区的博客过程中的一些记录。

目前笔者在生产中已经将重要的生产日志和操作记录同步到了数据湖中。

你可以在这里找到Hudi更多的资料:

https://hudi.apache.org/cn/docs/flink-quick-start-guide

小文件处理

Apache Hudi提供的一个关键特性是自我管理文件大小,这样用户就不需要担心手动维护表。

拥有大量的小文件将使计算更难获得良好的查询性能,因为查询引擎不得不多次打开/读取/关闭文件以执行查询。

但是对于流数据湖用例来说,可能每次都只会写入很少的数据,如果不进行特殊处理,这可能会导致大量小文件。

写期间VS写入后小文件优化

常见解决小文件的方法是写的时候就产生了大量小文件,事后再把这些文件合并到一起可以解决小文件带来的系统可扩展性问题;但是可能会影响查询的 SLA,因为我们把很多小文件暴露给它们。实际上,我们可以利用 Hudi 的 clustering 操作很轻松的实现小文件合并,关于 Hudi 的 clustering 我们后面专门开文章介绍。

在进行insert/upsert操作时,Hudi可以指定文件大小。

核心配置

为了便于说明,本文只考虑 COPY_ON_WRITE 表的小文件自动合并功能。在阅读下文之前,我们先来看看几个相关的参数:

  • hoodie.parquet.max.file.size:数据文件的最大大小。Hudi 会尝试将文件大小保持在此配置值;

  • hoodie.parquet.small.file.limit:文件大小小于这个配置值的均视为小文件;

  • hoodie.copyonwrite.insert.split.size:单分区插入的数据条数,这个值应该和单个文件的记录条数相同。可以根据 hoodie.parquet.max.file.size 和单条记录的大小进行调整。

例如,如果你的第一个配置值是120MB,第二个配置值是100MB,那么任何小于100M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王知无(import_bigdata)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值