Hudi的Index类型

news/2024/7/7 23:27:58

Hudi 的索引是 hoodiekey 到文件组(File Group)或者文件 ID(File ID)的映射,hoodiekey 由 recordkey 和 partitionpath 两部分组成。

定义在文件 HoodieIndex.java 中。

分一下几种:

类型说明
SIMPLE简单索引,分区内唯一所以,把 update 和 delete 操作的新数据和老数据进行 join,性能比较差
GLOBAL_SIMPLE简单索引,全局唯一索引
BUCKET桶所以,通过 hoodie.index.bucket.engine 设置桶索引类型
FLINK_STATEFlink 专用索引,内存需求同索引数量成正比
INMEMORY使用 hashmap 作为索引
BLOOM布隆索引,仅限单个分区内唯一
GLOBAL_BLOOM布隆索引,所有分区唯一
HBASE使用外部的 HBase 存储索引,为全局唯一索引
自定义索引实现接口 HoodieIndex,设置 hoodie.index.class 来应用
@EnumDescription("Determines how input records are indexed, i.e., looked up based on the key "
    + "for the location in the existing table. Default is SIMPLE on Spark engine, and INMEMORY "
    + "on Flink and Java engines.")
public enum IndexType {
    HBASE,
    INMEMORY,
    BLOOM,
    GLOBAL_BLOOM,
    SIMPLE,
    GLOBAL_SIMPLE,
    BUCKET,
    FLINK_STATE
}

从 hudi-0.13.0 版本开始,BUCKET 类型的索引又分为两种:

分类说明限制
SIMPLE固定桶数
CONSISTENT_HASHING动态桶数仅 MOR 表可用
  • 通用配置
配置项名默认值说明引入版本
hoodie.index.type无默认值索引类型,可取值:HBASE、INMEMORY、BLOOM、GLOBAL_BLOOM、SIMPLE、GLOBAL_SIMPLE、BUCKET、FLINK_STATE
hoodie.index.class“”指定索引类,必须为 HoodieIndex 的子类,自带的有 SparkHoodieHBaseIndex、HoodieBloomIndex、FlinkInMemoryStateIndex、HoodieSimpleBucketIndex、HoodieSparkConsistentBucketIndex
  • 布隆索引配置
配置项名默认值说明引入版本
hoodie.index.bloom.num_entries60000布隆索引配置,指定布隆槽数
hoodie.index.bloom.fpp0.000000001布隆精度
hoodie.bloom.index.parallelism0布隆并行查询数,0 表示根据负载自动
hoodie.bloom.index.use.cachingtrue是否缓存布隆的计算
hoodie.bloom.index.filter.typeDYNAMIC_V0布隆过滤器类型,可选 DYNAMIC_V0 或 SIMPLE
hoodie.bloom.index.keys.per.bucket10000000
  • SIMPLE索引配置
配置项名默认值说明引入版本
hoodie.simple.index.use.cachingtrue
hoodie.simple.index.parallelism0
hoodie.global.simple.index.parallelism100

http://lihuaxi.xjx100.cn/news/1115750.html

相关文章

深度学习技巧应用13-神经网络中数据并行训练的原理

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分15-神经网络中数据并行训练的原理,在神经网络中,数据并行训练是一种常用的训练技术。它利用多个GPU或多个计算机对同一个模型进行训练,不同的设备处理相同的模型和数据,但会随机选择不同的批次数据,并使用反向传播…

三子棋游戏的实现

前言:相信大家都玩过三子棋吧,曾想经常和同学在考试之后玩一个晚自习的三子棋。那么,如何自己编写一个三子棋游戏呢,请看下面的分析; 1.游戏设计思路 在写任何代码时,最好先有个大致的框架,然后…

物联网架构和技术:如何实现物物互联和智能化控制

第一章:引言 物联网是一种新兴的技术领域,通过将物理设备、传感器和软件等连接起来,可以实现设备之间的互联互通,让各种设备可以进行数据交换和智能化控制。在这个数字化时代,物联网已经成为了连接万物的关键技术之一…

一分钟图情论文:《国外智慧图书馆现状研究与启示》

一分钟图情论文:《国外智慧图书馆现状研究与启示》 智慧图书馆在中国经过十余年的发展仍然还处于探索和发展的初期阶段,国内主要还是以智慧图书馆的理论研究为主,较为缺乏理论和实践相结合的相关研究。东北师范大学的吴闯团队在《国外智慧图…

基于STM32+RC522设计的门禁系统

一、项目背景 门禁系统是现代社会中非常重要的安全控制系统之一,其功能是在保障建筑物安全的同时,为合法用户提供便利。当前设计一种基于STM32+RC522的门禁系统设计方案,通过RFID-RC522模块实现了对用户卡的注册、识别及身份验证,通过控制SG90舵机实现门锁的开关,具有较高…

Java之线程安全

目录 一.上节回顾 1.Thread类常见的属性 2.Thread类中的方法 二.多线程带来的风险 1.观察线程不安全的现象 三.造成线程不安全现象的原因 1.多个线程修改了同一个共享变量 2.线程是抢占式执行的 3.原子性 4.内存可见性 5.有序性 四.解决线程不安全问题 ---synchroni…

数据可视化工具 - ECharts折线图的编写

1 官网找到类似实例&#xff0c; 适当分析&#xff0c;并且引入到HTML页面中 <!DOCTYPE html> <html> <head><meta charset"utf-8"/><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src"ech…

一、Flask入门介绍

Flask 入门介绍 Flask 入门介绍 Flask 是一个基于 Python 的轻量级 Web 框架&#xff0c;它简单易用、灵活性强、可扩展性好&#xff0c;因此成为 Python Web 开发中的热门框架之一。 Flask 概念 Flask 是一个 Web 框架&#xff0c;它提供了一系列工具和库&#xff0c;用于…