Apache Hudi 1.0.0 正式发布,开源数据湖平台
Apache Hudi 1.0.0 是 Apache Hudi 的一个重要里程碑版本。此版本包含重要的格式更改和令人兴奋的新功能。
Apache Hudi 是一个开源数据湖平台,基于高性能的开源表格式,用于跨多个云数据环境进行数据的导入、索引、存储、服务、转换和管理。
迁移指南
我们鼓励用户首先在新表上试用 1.0.0 功能。1.0 通用版本 (GA) 将支持从 0.x 版本自动升级表,同时确保在使用 1.0 读取 0.x Hudi 表时完全向后兼容,从而确保无缝迁移体验。
此版本带有向后兼容的写入功能,即1.0.0可以写入表版本8(最新)和较旧的表版本6(对应于0.14及以上)格式。完全支持从 0.x 版本自动升级表,从而最大限度地减少迁移挑战。在所有读取器都升级之前,用户仍然可以为写入器部署 1.0.0 二进制文件,并利用向后兼容的写入继续以旧格式写入表。读取器完全升级后,用户可以通过配置更改切换到最新格式。我们建议用户按照迁移指南[1]中提到的升级步骤进行操作,以确保顺利过渡。
注意:
大多数事情都由自动升级过程无缝处理,但存在一些限制。在继续迁移之前,请仔细阅读升级降级过程的限制。请查看迁移指南[2] 和 RFC-78[3] 了解更多详情。
Bundle包更新
-
仍支持 0.15.0 版本中[4]支持的相同Bunle包。
-
新的 Flink Bundle包支持 Flink 1.19 和 Flink 1.20。
-
在此版本中我们弃用了 Spark 3 中对 Spark 3.2 或更低版本的支持。
发布重点
格式更改
涵盖所有格式更改的主要史诗是 HUDI-6242[5],它也包含在 Hudi 1.0 技术规范[6]中。以下是格式更改方面的主要亮点:
Timeline 时间线
-
活动时间线和存档时间线二分法已被更具可扩展性的基于 LSM 树的时间线所取代。时间线布局现在对于时间范围查询和扩展到无限历史记录更加有条理和高效。
-
因此时间轴布局已更改,并且已移至表的基本路径下的
.hoodie/timeline
目录。 -
时间轴即时文件也发生了变化:
-
所有提交元数据都序列化为 Avro,从而允许所有操作之间元数据的未来兼容性和一致性。
-
已完成操作的即时文件现在包含完成时间。
-
待处理的 clustering instant 的操作现在已重命名为
clustering,
以使其与其他replacecommit
操作区别。
-
日志文件格式
-
除了日志文件头中的键外我们还存储记录位置。有关更多详细信息,请参阅最新规范[7]。这允许我们进行基于位置的合并(除了基于键的合并)并基于位置跳过页面。
-
日志文件名现在将具有 deltacommit 即时时间,而不是基本提交即时时间。
-
新的日志文件格式还支持快速部分更新,存储开销较低。
与旧格式的兼容性
-
向后兼容写入:Hudi 1.0写入现在支持以表格版本8(最新)和较旧的表格版本6(对应于0.14及以上)格式写入,确保与现有设置无缝集成。
-
自动升级:完全支持 0.x 版本的表,从而最大限度地减少迁移挑战。我们也建议用户首先尝试迁移到0.14及以上版本,如果你有多个读取器/写入器/表服务的高级设置。
并发控制
1.0.0 引入了非阻塞并发控制 (NBCC),支持无冲突的多流并发摄取。这是一种通用并发模型,适用于流处理或高争用/频繁写入场景。与乐观并发控制相比,在乐观并发控制中,只要有争用写入器会中止事务,这项创新允许对同一个 Hudi 表进行多次流式写入,而不会产生任何冲突解决的开销,同时保留流式系统中的事件时间排序语义,以及异步表服务,例如压缩、归档和清理。
要了解有关 NBCC 的更多信息,请参阅此博客[8],其中还包括 Flink 写入端的演示。
新索引
1.0.0 为 Apache Hudi 的多模态索引子系统引入了新的索引。这些索引旨在通过分区修剪和进一步跳过数据来提高查询性能。
二级索引
二级索引允许用户在不属于 Hudi 表中记录键列的列上创建索引。它可用于加快对记录键列以外的列使用谓词的查询速度。
分区统计索引
分区统计索引在分区级别聚合启用了它的列的统计信息。这有助于高效的分区修剪,即使对于非分区字段也是如此。
表达式索引
表达式索引支持对从表达式派生的列进行高效查询。它可以收集从表达式派生的列的统计信息,而无需具体化它们,并且可用于使用包含此类表达式的筛选器加快查询速度。
要了解有关这些索引的更多信息,请参阅 SQL 查询[9]文档。
部分更新
1.0.0 扩展了对 Merge-on-Read 表的部分更新支持,这允许用户仅更新记录中的列子集。当用户只想更新记录中的几列而不重写整个记录时,此功能非常有用。
要了解有关部分更新的更多信息,请参阅 SQL DML[10] 文档。
单个表中的多种基本文件格式
-
在单个 Hudi 表中支持多种基本文件格式(例如 Parquet、ORC、HFile),从而允许为索引和 ML 应用程序等特定使用案例定制格式。
-
当用户想要从一种文件格式切换到另一种文件格式时,例如从 ORC 切换到 Parquet,而无需重写整个表格。
-
配置:使用 Enable 启用
hoodie.table.multiple.base.file.formats.enable
.
要了解有关格式更改的更多信息,请参阅 Hudi 1.0 技术规范[11]。
API 变更
1.0.0 引入了几项 API 变更,包括:
记录合并 API
HoodieRecordPayload
接口已被弃用,取而代之的是新的 HoodieRecordMerger
接口。记录合并是一个通用接口,允许用户定义用于合并基本文件和日志文件记录的自定义逻辑。此版本提供了一些开箱即用的合并模式,这些模式定义了基文件和日志文件在文件切片中的排序方式,以及如何一致地合并该文件切片中具有相同记录键的不同记录,以便为快照查询、写入器和表服务生成相同的确定性结果。具体来说,支持三种合并模式作为表级配置:
-
COMMIT_TIME_ORDERING
:合并只是选择属于最新写入 (提交时间) 的记录作为合并结果。 -
EVENT_TIME_ORDERING
:合并会选择用户指定的排序或预组合字段上具有最高值的记录作为合并结果。 -
CUSTOM:
用户可以提供自定义的合并实现,以便更好地控制合并逻辑。
注意:我们建议用户迁移并使用记录合并器 API,而不是编写新的有效负载实现。
使用 Filegroup Reader 进行位置合并
-
基于位置的合并:提供基于键的合并的替代方法,允许根据记录位置跳过页面。默认情况下,Spark 和 Hive 处于启用状态。
-
配置:使用
hoodie.merge.use.record.positions=true
激活位置合并。
新读取器在基于键的合并下,部分更新的性能提升令人印象深刻。对于大小为 1TB 的 MOR 表,具有 100 个分区,后续提交中有 80% 的随机更新,新读取器的快照查询速度提高了 5.7 倍,写入放大率降低了 70 倍。
Flink 增强功能
-
Lookup Joins:Flink 现在支持查找联接,从而支持使用外部数据源扩表。
-
Partition Stats 索引支持:如上所述,Flink 现在支持分区统计信息,为流式工作负载带来高效的分区修剪。
-
非阻塞并发控制:NBCC 现在可用于 Flink 流式写入器,允许多流并发摄取而不会发生冲突。
来源:https://mp.weixin.qq.com/s/7yXcYy1Tef23pyD3p9KbYA
更多独家技术见解与热门话题讨论,尽在【开源中国 APP】,与数百万开发者一起,随时随地探索技术无限可能。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Vue3 组件 view-shadcn-ui 2024.5.2 发布
View Shadcn UI 是一个基于 Tailwind CSS 构建的组件库。 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件:https://github.com/devlive-community/openai-java-sdk 推荐一套功能强大的开源数据中台系统:https://github.com/devlive-community/datacap 组件源码地址:https://github.com/devlive-community/view-shadcn-ui ✨ 功能特性 国际化:支持响应式语言切换 国际化:支持动态语言 实用工具:新增 UUID 工具函数 工作流:支持工作流 标签输入:支持标签输入组件 Map:支持 Map 组合数据功能 加载进度条:支持加载进度条 悬浮按钮:支持悬浮按钮 数据过滤:支持数据过滤功能 组件截图 语言国际化 UUID 工具函数 输入标签 加载进度条 悬浮按钮 数据筛选器 全局引用 修改main.ts入口文件中的配置如下: import { createApp } from '...
- 下一篇
Ant Design 5.22.5 发布,企业级 UI 设计语言和 React 实现
Ant Design 5.22.5 现已发布,主要变化如下: 重构 Wave/Menu/Formref检查逻辑以解决 React 19ref部分冲突(注:该更新不会完全解决 React 19 兼容问题,后续将会持续更新)。#51952 修复 Dropdownchildren不支持传入 ReactNode 的问题。#50174 修复 Carousel 某些情况下在 Modal 中无法正确展示的问题。#51988 修复 Select 选中文本溢出的问题 。#52011 修复 FormsetFieldValue没有重置字段校验信息的问题。#51993 修复 Pagination 配置showSizeChanger.showSearch无效的问题。#51962 优化 DatePicker 韩语本地化文案。#51983 从 antd 里导出CheckboxChangeEvent类型。#52008 更新说明:https://github.com/ant-design/ant-design/releases/tag/5.22.5 询问AI
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装