首页 > 其他分享 >Hudi表类型和查询类型

Hudi表类型和查询类型

时间:2023-05-30 12:55:52浏览次数:41  
标签:文件 Hudi MOR 压缩 查询 hoodie 类型 日志

官方参考

Table & Query Types

查询类型

  • 快照查询(Snapshot Queries)

查询最新的数据。

  • 增量查询(Incremental Queries)

查询指定时间范围内新增或修改的数据。

  • 读优化查询(Read Optimized Queries)

仅查询 Parquet 格式的基础文件中的数据,为 MOR 表特有。

表类型 支持的查询类型
COW 快照查询、增量查询
MOR 快照查询、增量查询、读优化查询
  • 快照查询和读优化查询对比
对比项 快照查询 读优化查询
数据延迟
查询延迟 高(需合并基础文件和增量的日志文件) 低(只涉及基础文件)

表类型

对比项 COW MOR
数据延迟
查询延迟
更新开销(I/O) 高(重写整个 parquet 文件) 低(追加写增量日志文件)
Parquet 文件大小 小(高更新开销) 大(低更新开销)
写放大 低(依赖压缩策略)

文件类型

  • 基础文件(basefiles)

基础文件为列存储格式(parquet)的文件,可类比为 MySQL innodb 引擎的 idb 数据文件或者 Redis 的 RDB 文件(Redis 的 RDB 未含所有数据,MOR 表的也是,但 COW 表的包含所有数据)。

  • 日志文件(logfiles)

日志文件是增量的(delta)只追加写的文件,可类比为 MySQL 的 binlog 文件或者 Redis 的 AOF 文件(实际为全量数据),为 MOR 表独有,为行存储格式(avro)文件。

COW 表 MOR 表
基础文件 包含所有数据 仅包含压缩(Compaction)后的数据
日志文件 没有日志文件 每次新写入的都放在日志文件,通过压缩合并为基础文件,压缩可同步或者异步进行,或者周期性的进行

压缩(Compaction)

Hudi 的压缩是为解决日志文件过多问题,通过压缩合并日志文件,减少日志文件数量。压缩分为调度(schedule)和执行(run)两个步骤,压缩的方式分为同步和异步两种。

设置 hoodie.compact.inline 为 true 启用同步压缩,设置为 false 启用异步压缩,默认为 false 。hoodie.compact.inline.max.delta.commits 控制最近一次压缩后新产生多少个 commits 后启动压缩,而 hoodie.compact.inline.max.delta.seconds 则控制最近一次压缩后多久启动压缩,压缩策略通过 hoodie.compaction.strategy 指定。

设置 hoodie.compact.schedule.inline 为 true(默认为 false),则可在每次写完成后决定是否触发压缩。

设置 hoodie.compact.inline.trigger.strategy 控制压缩触发策略。

标签:文件,Hudi,MOR,压缩,查询,hoodie,类型,日志
From: https://www.cnblogs.com/aquester/p/17442937.html

相关文章

  • “编不下去了!”~如何在泛型方法里获取T的类型?
    我定义了一个hessian2反序列化的工具方法。为了便于使用,使用了泛型。可是遇到了一个问题,其中调用的Hessian2Input#readObject的入参类型是Class实例。那么,怎么获取泛型T的类型呢?publicstatic<T>Tdeserialize(byte[]bytes)throwsIOException{try(ByteArrayInputStr......
  • Hudi的OverwriteNonDefaultsWithLatestAvroPayload效果测试
    设置Payload为OverwriteNonDefaultsWithLatestAvroPayload:set`hoodie.datasource.write.payload.class`=`org.apache.hudi.common.model.OverwriteNonDefaultsWithLatestAvroPayload`;插入和查询语句:insertintot71(ds,ut,pk,f0)values(20230101,CURRENT_TIMESTAMP,10......
  • Redis数据类型【Redis】
    Redis采用的是键值对存储,键的类型只能为字符串,值支持五种数据类型  Redis的value 类似Java中 特点 字符串类型(string) String 普通字符串哈希类型(hash) HashMap key不可重复,value可重复列表类型(list)LinkedList 数据排序,可重复 集合类型(se......
  • c++类型转换
    C语言中的类型转换C语言和C++都是强类型语言,如果赋值运算符左右两侧变量的类型不同,或形参与实参的类型不匹配,或返回值类型与接收返回值的变量类型不一致,那么就需要进行类型转换。C语言中有两种形式的类型转换,分别是隐式类型转换和显式类型转换:隐式类型转换:编译器在编译阶段自......
  • C#引用类型带ref关键字的用处
    1.在C#中有两个大的数据类型,值类型和引用类型。1)任何的结构体(例如:structInt32...)或者是枚举都是值类型。2)能被称作"类"的,则为引用类型,比如你用如下关键字(class、interface、delegate、record),或者是使用C#内置的引用类型:dynamic、object、string。引用类型和值类型。引用类......
  • MySQL-日期时间类型比较、互转
    【原理】日期、时间类型比较比较的是时间戳,即long型 【原理】日期、时间类型和字符串比较当涉及日期类型、时间类型和字符串类型比较时,会先将字符串转换成日期、时间类型,然后进行比较;例如:date_col<"2020-09-01",date_col是date类型,在比较时,会先将"2020-09-01"转换成dat......
  • 在统计学和机器学习中,常见的误差类型
    在统计学和机器学习中,常见的误差类型包括以下几种:1.随机误差(RandomError):随机误差是由于测量或观测过程中的不确定性引起的。它是无法避免的,通常表现为测量值或观测值的波动性。随机误差是独立的、不可预测的,并且在多次测量或观测中可以通过取平均值来减小其影响。2.系统误差(S......
  • 字符串类型内置方法
    一、字符串类型内置方法(str)1.用途:描述性质的东西,如人的名字、单个爱好、地址、国家等2.定义:使用''、""、''''''、""""""包裹的的一串字符u'unicode':unicode编码的字符串b'101':二进制编码的字符串r'\n':原生字符串,也就是说......
  • C++ Primer 第一、二章 C++基础,变量和基本类型
    一、C++基础<iostream>包含两个基础类型,istream-输入流和ostrea-输出流。标准库定义了四个IO对象cin-标准输入(istream),cout-标准输出(o),cerr-标准错误(o),clog-用来输出程序运行时的一般性信息(o)。 #include<iostream>intmain(){std::cout<<"Enter"<<std:......
  • Python连接es笔记二之查询方式汇总
    本文首发于公众号:Hunter后端原文链接:Python连接es笔记二之查询方式汇总上一节除了介绍使用Python连接es,还有最简单的query()方法,这一节介绍一下几种其他的查询方式。以下是本篇笔记目录:query()方法介绍Q()查询排序分页source()指定返回字段extra()操作count......