当前位置: 首页 > news >正文

Hudi系列19:Hudi写入模式

一. Changelog 模式

如果希望 Hoodie 保留消息的所有变更(I/-U/U/D), 之后接上 Flink 引擎的有状态计算实现全链路近实时数仓(增量计算), Hoodie 的 MOR 表通过行存 原生支持 保留消息的所有变更(format 层面的集成), 通过流读MOR 表可以消费到所有的变更记录。

1.1 WITH 参数

名称Required默认值说明
changelog.enabledfalsefalse默认是关闭的,即UPSERT语义,所有的消息仅保证最后一条合并消息,中间的变更可能会被merge掉: 改为true支持消费所有的变更

批(快照) 读仍然会合并所有的中间结果, 不管 format 是否已经存储中间的状态。

开启 changelog.enabled 参数后, 中间的变更也只是 Best Effort: 异步IDE压缩任务会将中间变更合并成1条,所以如果流读消费不够及时,被压缩后只能读取到最后一条记录。当然,通过调整压缩的buffer时间可以预留一定的时间 buffer 给 reader, 比如调整压缩比。

二. Append 模式

从 0.10 开始支持
对于INSERT模式:

  1. MOR 默认会 apply小文件策略: 会追加写 avro log 文件
  2. COW 每次直接写新的 parquet 文件,没有小文件策略

Hudi 支持丰富的 Clustering 策略, 优化 INSERT 模式下的小文件问题。

2.1 Inline Clustering

只有 Copy On Write 表支持该模式

名称Required默认值说明
write.insert.clusterfalsefalse是否在写入时合并小文件,COW表默认insert写不合并小文件,开启参数后, 每次写入会优先合并之前的小文件(不会去重), 吞吐会受影响

2.2 Async Clustering

从 0.12 开始支持

名称Required默认值说明
clustering.scheduler.enabledfalsefalse是否在写入时定时异步调度 clustering plan,默认关闭
clustering.delta_commitsfalse4跳读 clustering plan 的间隔 commits
clustering.async.enabledfalsefalse是否异步执行 clustering plan,默认关闭
clustering.tasksfalse4Clustering task 执行并发
clustering.plan.strtegy.target.file.max.bytesfalse102410241024Clustering 单文件目标大小,默认1GB
clustering.plan.strategy.small.file.limitfalse600小于该大小的文件才会参与clustering
clustering.plan.strategy.sort.columnsfalseN/A支持指定特殊的排序字段
clustering.plan.partition.filter.modefalseNONE支持 NONE: 不做限制 RECET DAYS:按时
http://www.lryc.cn/news/10263.html

相关文章:

  • Kubernetes安全
  • 全国进入裁员潮,到底是大厂难混?还是我技不如人?
  • 电子技术——内部电容效应以及MOS与BJT的高频响应模型
  • 华为OD机试题 - 出租车计费(JavaScript)
  • Django框架进阶版
  • 2023美赛F题全部代码+数据+结果 数学建模
  • Java基础-logback日志使用
  • kaggle竞赛-宠物受欢迎程度(赛题讲解与数据分析)
  • Go语言基础知识学习笔记
  • Python3 错误和异常
  • 程序人生 - 学习和分享
  • 基于树莓派的智能家居项目整理
  • 《洛阳冬冷》
  • YOLOv5简介
  • 【面向对象语言三大特性之 “继承”】
  • Ambari2.7.5集群搭建详细流程
  • 房产|1月全国70城房价出炉!疫情放开后你关心的城市房价有何变化
  • 秒验 重新定义“一键登录”
  • ZenBuster:一款功能强大的多线程跨平台URL枚举工具
  • 2023年美赛ICM问题E:光污染 这题很好做啊!
  • InVEST模型 | 01 InVEST模型安装(Windows10)
  • spring-web InvocableHandlerMethod 源码分析
  • 一分钟了解微信公众号服务器配置自动回复
  • 打印不同的图形-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
  • 14. QT_OPenGL中引入顶点着色器和片段着色器
  • ecaozzz
  • 应用部署初探:6个保障安全的最佳实践
  • 转转测试环境docker化实践
  • linux 之 ps命令介绍
  • Server端的Actor,分工非常的明确,但是只将Actor作为一部手机来用,真的合适吗?