0.11 版本包含了来自61个贡献者的638个commits!
在 0.11.0 中,我们默认为 Spark writer 启用具有同步更新的元数据表和基于元数据表的file listing,以提高在大型 Hudi 表上的分区和文件 listing 的性能。在reader方面,用户需要将其设置为 hoodie.metadata.enable = true
以从中受益。元数据表和相关文件listing 仍然可以通过设置hoodie.metadata.enable=false来关闭此功能。因此,使用异步表服务部署 Hudi 的用户需要配置锁服务。如果无需使用此功能,可以通过额外设置这个配置 hoodie.metadata.enable = false
像以前一样使用 Hudi。
我们在元数据表中引入了多模式索引,以显着提高文件索引中的查找性能和数据跳过的查询延迟。元数据表中添加了两个新索引
默认情况下它们被禁用。您可以通过分别设置hoodie.metadata.index.bloom.filter.enable
和hoodie.metadata.index.column.stats.enable
为true来启用它们。
有关升级和部署的详细说明[1],请参阅元数据表指南。
随着在元数据表中增加了对列统计的支持,数据跳过现在依赖于元数据表的列统计索引 (CSI),而不是其自己的定制索引实现(与 0.10.0 中添加的空间曲线相比),允许利用数据跳过对于所有数据集,无论它们是否执行布局优化程序(如聚类)。要从数据跳过中受益,请确保同时为写入器和读取器设置hoodie.enable.data.skipping=true,并在元数据表中启用元数据表和列统计索引。
数据跳过支持标准函数(以及一些常用表达式),允许您将常用标准转换应用于查询过滤器中列的原始数据。例如,如果您有将时间戳存储为字符串的列“ts”,您现在可以在谓词中使用人类可读的日期来查询它,如下所示date_format(ts, "MM/dd/yyyy" ) < "04/01/2022"。
注意:目前仅在COW 表和读优化模式下的MOR 表中支持 Data Skipping。在HUDI-3866中跟踪了对 MOR 表的全面支持的工作
有关更多信息,请参阅性能指南[2]。
在 0.11.0 中,我们添加了一个新的异步服务,用于索引我们丰富的表服务集。它允许用户在元数据表中创建不同类型的索引(例如,文件、布隆过滤器和列统计信息),而不会阻塞摄取。索引器在时间线上添加一个名为“indexing”的新action。虽然索引过程本身是异步的并且对写入者来说是非阻塞的,但需要配置锁提供程序以安全地协调运行中的写入者进程。
有关详细信息,请参阅索引指南[3]。
Hudi 的 Spark 低层次集成进行了相当大的改进,整合了通用流程以共享基础架构,并在查询数据时提高了计算和数据吞吐量效率。
有关相关配置更新,请参阅迁移指南[4]。
在 0.11.0 中,用户现在可以轻松更改 Hudi 表的当前Schema,以适应不断变化的数据Schema变化。通过ALTER TABLE语法为 Spark 3.1.x 和 Spark 3.2.1 添加了 Spark SQL DDL 支持(实验性) 。
有关更多详细信息,请参阅模式演变指南[5]。
有关更多详细信息和示例,请参阅快速入门 - Spark 指南[6]。
增加了 Spark 3.2 支持;使用 Spark 3.2 的用户可以使用hudi-spark3.2-bundle或hudi-spark3-bundle(旧包名称)。
有关使用更新,请参阅迁移指南[7]。
在 0.11.0 中,hudi-utilities-slim-bundle添加了一个新项以排除可能导致与其他框架(如 Spark)发生冲突和兼容性问题的依赖项。
在 0.11.0 中,Hudi 表可以作为外部表从 BigQuery 中查询。用户可以设置org.apache.hudi.gcp.bigquery.BigQuerySyncTool
为HoodieDeltaStreamer的同步工具实现,并使目标 Hudi 表在 BigQuery 中可发现。请参阅 BigQuery 集成指南页面[9]了解更多详情。
注意:这是一项实验性功能,仅适用于 hive 样式分区的 Copy-On-Write 表。
在 0.11.0 中,Hudi 表可以直接通过 AWS 开发工具包同步到 AWS Glue Data Catalog。用户可以设置org.apache.hudi.aws.sync.AwsGlueCatalogSyncTool
为HoodieDeltaStreamer的同步工具实现,并使目标 Hudi 表在 Glue Catalog中可发现。有关更多详细信息,请参阅同步到 AWS Glue Data Catalog指南页面[10]。
注意:这是一个实验性功能。
在 0.11.0 中,Hudi 表的元数据(特别是模式和上次同步提交时间)可以同步到DataHub[11]。用户可以将目标表设置org.apache.hudi.sync.datahub.DataHubSyncTool
为HoodieDeltaStreamer的同步工具实现,并将目标表同步为DataHub中的Dataset。有关详细信息,请参阅同步到 DataHub指南页面[12]。
注意:这是一个实验性功能。
在 0.11.0 中,添加了对 Spark 3.2 的支持,并附带了 Parquet 1.12,它为 Hudi(COW表)带来了加密功能。有关详细信息,请参阅加密指南页面[13]。
0.11.0增加了一种高效、轻量级的索引类型Bucket index。它使用基于记录键的散列函数将记录分配到存储桶,其中每个存储桶对应于单个文件组。要使用此索引,请将索引类型设置为BUCKET并设置hoodie.storage.layout.partitioner.class
为org.apache.hudi.table.action.commit.SparkBucketIndexPartitioner
。对于 Flink,设置index.type=BUCKET
.
更多详情请在配置页面中参考hoodie.bucket.index.*
。
灾难恢复是任何生产部署中的关键特性。尤其是在涉及存储数据的系统中。Hudi 从一开始就为 COW 表提供了保存点和恢复功能。在 0.11.0 中,我们添加了对 MOR 表的支持。
有关此功能的更多信息,请参阅灾难恢复[14]。
Hudi 用户可以使用org.apache.hudi.callback.HoodieWriteCommitCallback
在成功提交时调用回调函数。在 0.11.0中,除了现有的 HTTP 回调和 Kafka 回调之外,我们还添加了这些HoodieWriteCommitPulsarCallback回调。详细设置请参考配置页面[15]。
在 0.11.0 中,添加了org.apache.hudi.utilities.schema.HiveSchemaProvider
用于从用户定义的Hive表中获取Schema。这在HoodieDeltaStreamer拖尾 Hive 表而不是提供 avro 模式文件时很有用。
不再正式支持 3.0.x 的 Spark Bundle包。鼓励用户升级到 Spark 3.2 或 3.1。
鼓励用户使用名称中带有特定 Spark 版本的包 ( hudi-sparkX.Y-bundle) 并远离旧包 (hudi-spark-bundle和hudi-spark3-bundle)。
Spark 或 Utilities 包在运行时不再需要额外spark-avro的包;可以删除--package org.apache.spark:spark-avro_2.1*:*
选项。
对于 MOR 表,hoodie.datasource.write.precombine.field
写入和读取都需要。
仅在使用BigQuery 集成[16]时设置hoodie.datasource.write.drop.partition.columns=true
。
对于依赖提取物理分区路径的 Spark reader,设置hoodie.datasource.read.extract.partition.values.from.path=true
为与现有行为保持兼容。
Spark 的默认索引类型从 BLOOM
更改为SIMPLE
( HUDI-3091[17] )。如果您当前依赖默认BLOOM 索引类型,请相应地更新您的配置。
原始发行说明可在此处获得:https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322822&version=12350673
感谢参与0.10.0版本的所有贡献者,欢迎广大数据湖爱好者加入Apache Hudi社区,欢迎star & fork https://github.com/apache/hudi
[1]
详细说明: https://hudi.apache.org/docs/metadata#deployment-considerations
[2]
性能指南: https://hudi.apache.org/docs/performance#read-path
[3]
索引指南: https://hudi.apache.org/docs/metadata_indexing
[4]
迁移指南: https://hudi.apache.org/releases/release-0.11.0#migration-guide
[5]
模式演变指南: https://hudi.apache.org/docs/schema_evolution
[6]
快速入门 - Spark 指南: https://hudi.apache.org/docs/quick-start-guide
[7]
迁移指南: https://hudi.apache.org/releases/release-0.11.0#migration-guide
[8]
Bucket Index: https://hudi.apache.org/releases/release-0.11.0#bucket-index
[9]
BigQuery 集成指南页面: https://hudi.apache.org/docs/gcp_bigquery
[10]
同步到 AWS Glue Data Catalog指南页面: https://hudi.apache.org/docs/syncing_aws_glue_data_catalog
[11]
DataHub: https://datahubproject.io/
[12]
同步到 DataHub指南页面: https://hudi.apache.org/docs/syncing_datahub
[13]
加密指南页面: https://hudi.apache.org/docs/encryption
[14]
参阅灾难恢复: https://hudi.apache.org/docs/disaster_recovery
[15]
参考配置页面: https://hudi.apache.org/docs/configurations#Write-commit-pulsar-callback-configs
[16]
BigQuery 集成: https://hudi.apache.org/docs/gcp_bigquery
[17]
HUDI-3091: https://issues.apache.org/jira/browse/HUDI-3091