Apache Hudi 0.9.0版本重磅发布!更强大的流式数据湖平台

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 笔记

1. 重点特性


1.1 Spark SQL支持

0.9.0 添加了对使用 Spark SQL 的 DDL/DML 的支持,朝着使所有角色(非工程师、分析师等)更容易访问和操作 Hudi 迈出了一大步。 用户现在可以使用 CREATE TABLE....USING HUDICREATE TABLE .. AS SELECT 语句直接在 Hive 等目录中创建和管理表。 然后用户可以使用 INSERTUPDATEMERGE INTODELETE 语句来操作数据。 此外,INSERT OVERWRITE 语句可用于覆盖现有批处理 ETL 管道的表或分区中的现有数据。 有关更多信息,请在此处单击 SparkSQL 查看文档。 有关更多实现细节,请参阅 RFC-25


1.2 Flink集成

  • Flink写入支持 CDC Format的 MOR 表,打开选项 changelog.enabled时,Hudi 会持久化每条记录的所有更改标志,使用 Flink 的流读取器,用户可以根据这些更改日志进行有状态的计算。请注意当使用异步压缩时,所有中间更改都合并为一个(最后一条记录),仅具有 UPSERT 语义。
  • 支持Bulk insert来加载现有表,可以将 write.operation 设置为 bulk_insert 来使用。
  • Flink支持流式读取 COW 表。
  • 删除消息默认在流式读取模式下发出,当 changelog.enabledfalse 时,下游接收 DELETE 消息作为带有空负载的 Hudi 记录。
  • Flink写入现在可以更新历史分区,即删除历史分区中的旧记录然后在当前分区插入新记录,打开 index.global.enabled 使用。
  • 通过支持不同的 Hive 版本(1.x、2.x、3.x),大大改善了 Hive 同步。
  • Flink 支持纯日志追加模式,在这种模式下没有记录去重,对于 COWMOR 表,每次刷新都直接写入 parquet,关闭 write.insert.deduplicate 以开启这种模式。


1.3 查询端改进

  • Hudi 现在可以在 Spark 中注册为数据源表。
  • 基于Metadata Table的 Spark 读取改进。
  • 添加了对时间旅行查询的支持。 请参考时间旅行


1.4 写入端改进

  • 添加了虚拟键支持,用户可以避免将元字段添加到 Hudi 表并利用现有的字段来填充记录键和分区路径。 请参考 具体配置来开启虚拟键。
  • Clustering改进
  • DeltaStreamer 和 Spark Streaming 都添加了异步Clustering支持。可以在这篇博客文章中找到更多细节。
  • 增量读取也适用于Clustering数据。
  • 添加了 HoodieClusteringJob 以作为独立作业来构建和执行Clustering计划。
  • 添加了一个配置(hoodie.clustering.plan.strategy.daybased.skipfromlatest.partitions)以在创建Clustering计划时跳过最近的 N 个分区。
  • 增强 Bulk_Insert模式(新增行写入器模式),并缺省打开,用户可以使用行写入器模式以获得更好的性能。
  • 在 HiveSyncTool 中添加了对 HMS 的支持。 HMSDDLExecutor 是一个 DDLExecutor 实现,基于使用 HMS 的 HMS apis 直接用于执行所有 DDL 。
  • Spark 引擎中添加了预提交验证器框架。 用户可以利用该框架来添加验证给定提交的文件是否都存在,或是否已经删除所有无效文件等。
  • 这些可以通过设置 hoodie.precommit.validators=<逗号分隔的验证器类名称列表> 来配置。 用户还可以通过扩展抽象类 SparkPreCommitValidator 并覆盖此方法来提供自己的实现。
  • 用户可以选择删除用于生成分区路径的字段(hoodie.datasource.write.drop.partition.columns),以支持使用BigQuery系统查询Hudi快照。
  • 支持华为云、百度云、金山云对象存储。
  • 添加了对delete_partition操作的支持,用户可以在需要时利用它删除旧分区。
  • ORC格式支持,现在用户可以指定存储格式为ORC,注意现在暂时只支持Spark查询。
  • Hudi 使用不同类型的可溢出映射,用于内部处理合并(压缩、更新甚至 MOR 快照查询)。 在 0.9.0 中,我们添加了对 bitcask默认选项的压缩支持,并引入了由 RocksDB 支持,它可以在大批量更新或处理大型基本文件时性能更高。
  • 增强对未提交的数据的自动清理,该增强在云存储上性能更优,具体来说是新增了一种新的标记机制,利用时间线服务器对底层存储执行集中协调的文件标记批量读/写。 你可以使用这个配置来启用,并在这个博客上了解更多。


1.5 DeltaStreamer改进

  • JDBC Source 可以采用提取 SQL 语句并从支持 JDBC 的源中增量获取数据。 这对于例如从 RDBMS 源读取数据时很有用。 请注意,这种方法可能需要定期重新引导以确保数据一致性,尽管在基于 CDC 的方法上操作要简单得多。
  • SQLSource 使用 Spark SQL 语句从现有表中提取数据,对于基于 SQL 的简单回填用例非常有用,例如:过去 N 个月只回填一列。
  • S3EventsHoodieIncrSourceS3EventsSource 有助于从 S3 读取数据,可靠且高效地将数据摄取到 Hudi。 现有使用 DFSSource 的方法是使用文件的最后修改时间作为检查点来拉入新文件,但是如果大量文件具有相同的修改时间,则可能会遇到丢失一些要从源读取的文件的问题。 这两个源(S3EventsHoodieIncrSource 和 S3EventsSource)通过利用从源存储桶订阅文件事件的 AWS SNS 和 SQS 服务,共同确保将数据从 S3 可靠地摄取到 Hudi。
  • 除了使用 DeltaStreamer 使用常规偏移格式(topic_name,partition_num:offset,partition_num:offset,....),我们还为 kafka 源提取数据添加了两种新格式,即基于时间戳和组消费者偏移量。
  • 添加了在 deltastreamer 中使用模式提供程序在模式注册表提供程序 url 中传递基本身份验证凭据的支持。
  • hudi-cli 的一些改进,例如SCHEDULE COMPACTIONRUN COMPACTION语句,以便轻松在 Hudi 表上调度和运行Compaction、Clustering。


2. 迁移指南


  • 如果从 0.5.3 之前的版本迁移,还请检查下面每个后续版本的升级说明。
  • Hudi 在 0.9.0 中添加了更多表属性,以帮助将现有的 Hudi 表与 spark-sql 结合使用。 为了顺利地迁移,这些属性添加到 hoodie.properties 文件中。 每当 Hudi 使用较新的表版本启动时,即 2(或从 0.9.0 之前移动到 0.9.0),升级步骤将自动执行。 这个自动升级步骤对于每个 Hudi 表只会发生一次,因为hoodie.table.version 将在升级完成后在属性文件中更新。
  • 同样如果某些用户想要将 Hudi 从表版本 2 降级到 1 或从 Hudi 0.9.0 移动到 0.9.0 之前,则添加了用于降级的命令行工具(command - downgrade),需要使用0.9.0版本中的hudi-cli工具。
  • 在此版本中我们添加了一个新框架来跟踪代码中的配置属性,不再使用包含属性名称和值的字符串变量。 这一举措有助于我们自动生成配置文档。虽然我们仍然支持旧的字符串变量,但鼓励用户使用新的 ConfigProperty 配置项。在大多数情况下,它就像在相应的替代方法上调用 .key().defaultValue() 一样简单。 例如 RECORDKEY_FIELD_OPT_KEY 可以替换为 RECORDKEY_FIELD_NAME.key()


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
1月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
63 5
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
9天前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
1月前
|
前端开发 Java API
Apache Seata(incubating) 首个版本重磅发布!
2.1.0 是 Seata 进入 Apache 基金会的第一个 Release Version。此次发布将 io.seata 包名更改为 org.apache.seata。除了按原有的 Roadmap 技术演进外,2.1.0 进行了大量兼容性工作,实现了 API、数据和协议的兼容。用户无需修改原有的 API 和配置,即可实现到 Apache 版本的平滑升级。
101 11
Apache Seata(incubating) 首个版本重磅发布!
|
8天前
|
SQL 存储 Java
Apache Doris 2.1.7 版本正式发布
亲爱的社区小伙伴们,**Apache Doris 2.1.7 版本已于 2024 年 11 月 10 日正式发布。**2.1.7 版本持续升级改进,同时在湖仓一体、异步物化视图、半结构化数据管理、查询优化器、执行引擎、存储管理、以及权限管理等方面完成了若干修复。欢迎大家下载使用。
|
1月前
|
存储 数据挖掘 数据处理
Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析
【10月更文挑战第8天】随着数据湖技术的发展,越来越多企业开始利用这一技术优化数据处理。Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析。本文分享了巴别时代在构建基于 Paimon 的 Streaming Lakehouse 的探索和实践经验,包括示例代码和实际应用中的优势与挑战。
63 1
|
1月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
2月前
|
SQL 存储 缓存
Apache Doris 2.1.6 版本正式发布
2.1.6 版本在 Lakehouse、异步物化视图、半结构化数据管理持续升级改进,同时在查询优化器、执行引擎、存储管理、数据导入与导出以及权限管理等方面完成了若干修复
|
3月前
|
存储 数据挖掘 数据处理
【破晓数据湖新时代!】巴别时代揭秘:Apache Paimon 打造 Streaming Lakehouse 的神奇之旅!
【8月更文挑战第9天】随着数据湖技术的发展,企业积极探索优化数据处理的新途径。Apache Paimon 作为一款高性能数据湖框架,支持流式与批处理,适用于实时数据分析。本文分享巴别时代使用 Paimon 构建 Streaming Lakehouse 的实践经验。Paimon 统一了数据存储与查询方式,对构建实时数据管道极具价值。
220 3
|
4月前
|
SQL JSON Apache
Apache Doris 2.1.5 版本正式发布
在湖仓一体、多表物化视图、半结构化数据分析等方面进行了全面更新及改进,同时在倒排索引、查询优化器、查询引擎、存储管理等 10 余方向上完成了若干问题修复

推荐镜像

更多