Apache Hudi 0.9.0版本重磅发布!更强大的流式数据湖平台
1. 重点特性
1.1 Spark SQL支持
0.9.0 添加了对使用 Spark SQL 的 DDL/DML 的支持,朝着使所有角色(非工程师、分析师等)更容易访问和操作 Hudi 迈出了一大步。 用户现在可以使用 CREATE TABLE....USING HUDI
和 CREATE TABLE .. AS SELECT
语句直接在 Hive 等目录中创建和管理表。 然后用户可以使用 INSERT
、UPDATE
、MERGE INTO
和 DELETE
语句来操作数据。 此外,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.enabled
为false
时,下游接收DELETE
消息作为带有空负载的 Hudi 记录。 - Flink写入现在可以更新历史分区,即删除历史分区中的旧记录然后在当前分区插入新记录,打开
index.global.enabled
使用。 - 通过支持不同的 Hive 版本(1.x、2.x、3.x),大大改善了 Hive 同步。
- Flink 支持纯日志追加模式,在这种模式下没有记录去重,对于
COW
和MOR
表,每次刷新都直接写入 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 引擎中添加了预提交验证器框架。 用户可以利用该框架来添加验证给定提交的文件是否都存在,或是否已经删除所有无效文件等。
- org.apache.hudi.client.validator.SqlQueryEqualityPreCommitValidator 可用于验证提交前后行的数据行相同
- org.apache.hudi.client.validator.SqlQueryInequalityPreCommitValidator 可用于验证提交前后的数据行不相同
- org.apache.hudi.client.validator.SqlQuerySingleResultPreCommitValidator 可用于验证表是否产生特定值
这些可以通过设置
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 个月只回填一列。
- S3EventsHoodieIncrSource 和 S3EventsSource 有助于从 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 COMPACTION
和RUN 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()
。
3. 感谢
感谢参与0.9.0版本的所有贡献者,欢迎广大数据湖爱好者加入Apache Hudi社区,欢迎star & fork https://github.com/apache/hudi
4. 源码下载
- 源码下载 : Apache Hudi 0.9.0 Source Release
- Maven仓库包地址: 地址
Apache Hudi 0.9.0版本重磅发布!更强大的流式数据湖平台的更多相关文章
- Apache Hudi 0.5.1版本重磅发布
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...
- 基于Apache Hudi在Google云构建数据湖平台
自从计算机出现以来,我们一直在尝试寻找计算机存储一些信息的方法,存储在计算机上的信息(也称为数据)有多种形式,数据变得如此重要,以至于信息现在已成为触手可及的商品.多年来数据以多种方式存储在计算机中, ...
- Apache Hudi 0.8.0版本重磅发布
1. 重点特性 1.1 Flink集成 自从Hudi 0.7.0版本支持Flink写入后,Hudi社区又进一步完善了Flink和Hudi的集成.包括重新设计性能更好.扩展性更好.基于Flink状态索引 ...
- Apache Hudi 0.6.0版本重磅发布
1. 下载信息 源码:Apache Hudi 0.6.0 Source Release (asc, sha512) 二进制Jar包:nexus 2. 迁移指南 如果您从0.5.3以前的版本迁移至0.6 ...
- Apache Hudi 0.7.0版本重磅发布
重点特性 1. Clustering 0.7.0版本中支持了对Hudi表数据进行Clustering(对数据按照数据特征进行聚簇,以便优化文件大小和数据布局),Clustering提供了更灵活地方式增 ...
- Flutter 1.17版本重磅发布
Flutter 1.17 是2020年的第一个稳定版本,此版本包括iOS平台Metal支持(性能更快),新的Material组件,新的Network跟踪工具等等! 对所有人来说,今年是充满挑战的一年. ...
- Hive 集成 Hudi 实践(含代码)| 可能是全网最详细的数据湖系列
公众号后台越来越多人问关于数据湖相关的内容,看来大家对新技术还是很感兴趣的.关于数据湖的资料网络上还是比较少的,特别是实践系列,对于新技术来说,基础的入门文档还是很有必要的,所以这一篇希望能够帮助到想 ...
- 重磅发布丨乐维监控:全面兼容云平台,助力企业DevOps转型升级!
2019年伊始,我们迎来了乐维监控的又一重大功能更新——云平台监控,这将有效帮助企业将云上.云下数据聚合,方便统一化的监控管理与维护!未来,乐维监控每一次的产品功能及版本更新,我们都将第一时间于此发布 ...
- 基于Apache Hudi构建数据湖的典型应用场景介绍
1. 传统数据湖存在的问题与挑战 传统数据湖解决方案中,常用Hive来构建T+1级别的数据仓库,通过HDFS存储实现海量数据的存储与水平扩容,通过Hive实现元数据的管理以及数据操作的SQL化.虽然能 ...
- 基于Apache Hudi 的CDC数据入湖
作者:李少锋 文章目录: 一.CDC背景介绍 二.CDC数据入湖 三.Hudi核心设计 四.Hudi未来规划 1. CDC背景介绍 首先我们介绍什么是CDC?CDC的全称是Change data Ca ...
随机推荐
- 【逆向】x64dbg设置条件断点 比较内存字符串是否相等
前言 在OD中可以设置条件断点,通过表达式对字符串数据进行比较,比如在CreateFile打开某个特定文件的时候让调试器中断.但是在x32dbg.x64dbg中因为表达式只支持整数,不支持字符串和其它 ...
- 4组-Alpha冲刺-4/6
一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15553653.html 小组人数:8人 二.冲刺概况汇报 组长:许雅萍 过去两天 ...
- error: You must be logged in to the server (Unauthorized) 问题处理
故障现象: 执行kubectl 命令时: 提示"error: You must be logged in to the server (Unauthorized)" 分析: 权限问 ...
- C#-读取写入Excel
/// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名 ...
- 第12组 Beta冲刺 (5/5)
1.1基本情况 ·队名:美少女战士 ·组长博客:https://www.cnblogs.com/yaningscnblogs/p/14016978.html ·作业博客:https://edu.cnb ...
- FileLocator Pro注册机
- mybatis-config.xml头信息
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 P ...
- django_模型层及ORM介绍
一.模型层介绍 1.作用:负责跟数据库之间进行通信. 2.django通过驱动mysqlclient与mysql数据库进行通信,所以需要先安装.版本需要是1.3.13以上. 如果直接安装报错,可以直接 ...
- MySQL数据库性能优化的八种方式
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...
- Vue学习之基础大全
1 导入vue: 2 <script src="vue.min.js"></script> 3 创建vm实例 4 var vm=new Vue({ 5 el ...