Apache Hudi 0.6.0版本重磅发布
1. 下载信息
- 源码:Apache Hudi 0.6.0 Source Release (asc, sha512)
- 二进制Jar包:nexus
2. 迁移指南
- 如果您从0.5.3以前的版本迁移至0.6.0,请仔细核对每个版本的迁移指南;
- 0.6.0版本从基于list的rollback策略变更为了基于marker文件的rollback策略,为进行平稳迁移,会在
hoodie.properties
文件中配置一个新属性hoodie.table.version
;无论何时使用Hudi表新版本,如1(从0.6.0以前迁移到0.6.0),将会自动进行升级,并且只会对Hudi表升级一次,升级后hoodie.table.version
属性将会自动更新。 - 类似也提供了一个降级命令行工具(-downgrade),如用户想从0.6.0版本回退到之前的版本,此时
hoodie.table.version
将会从1变为0。 - 如果你在
bulkInsert()
RDD API中使用了自定义partitioner,注意0.6.0版本中该接口变为了BulkInsertPartitioner
,需要对你的实现做适配。
3. 重点特性
3.1 写入端改进
- 对已有Parquet表进行迁移:支持通过Spark Datasource/DeltaStreamer引导已存在的Parquet表迁移至Hudi,同时可通过Hive,SparkSQL,AWS Athena进行查询(PrestoDB即将支持),技术细节请参考RFC-15。该特性暂时标记为experimental,在后续的0.6.x版本将持续进行完善。与传统重写方案相比资源消耗和耗时都有数据量的提升。
- bulk_insert支持原生写入:避免在bulk_insert写入路径中进行DataFrame - RDD转化,可显著提升bulk load的性能。后续的0.6.x版本将应用到其他的写操作以使得schema管理更为轻松,彻底避免spark-avro的转化。
- bulk_insert模式:Hudi bulk_insert对输入进行排序以便优化文件大小并避免在并发写入DFS多分区时的内存溢出问题,对于想在写入Hudi之前就已经准备好DataFrame的用户,Hudi也提供了
hoodie.bulkinsert.sort.mode
配置项。 - 支持Cleaning与写入并发执行,开启
hoodie.clean.async=true
以减少commit过程的耗时; - Spark Streaming写入支持异步Compaction,可通过
hoodie.datasource.compaction.async.enable
进行配置。 - 支持通过marker文件进行Rollback,而不再对全表进行listing,设置
hoodie.rollback.using.markers=true
启用。 - 支持一种新的索引类型
hoodie.index.type=SIMPLE
,对于updates/deletes覆盖表大多数数据的场景,会比BLOOM_INDEX
更快。 - 支持
Azure Data Lake Storage V2
,Alluxio
和Tencent Cloud Object Storage
- HoodieMultiDeltaStreamer 支持在单个DeltaStreamer中消费多个Kafka流,降低使用DeltaStreamer作为数据湖摄取工具时的运维负担。
- 新增新的工具类InitialCheckPointProvider,以便在迁移至DeltaStreamer后设置Checkpoint。
- DeltaStreamer工具支持摄取CSV数据源,同时可chain多个transformers来构建更灵活的ETL作业。
- 引入新的Key生成器
CustomKeyGenerator
,对不同类型的Key、Partition路径提供更灵活的配置,另外在TimestampBasedKeyGenerator
中还支持更多时间单位。更多详情请参考docs
3.2 查询端改进
- 从0.6.0版本开始,Spark DataSource支持MoR表的SNAPSHOT查询;
- 在之前版本中,对CoW表,Hudi仅仅支持
HoodieCombineHiveInputFormat
来确保对于任何查询都只会生成有限数量的mappers。Hudi现在对MoR表支持使用HoodieCombineInputFormat
。 - 在HoodieROPathFilter中缓存MetaClient来加速Spark查询,这可以减少在S3上对Read-Optimized查询进行文件过滤的额外开销。
3.3 易用性提升
- 对Spark DAG赋名字以便更好的进行调试。
- 支持用户自定义可插拔指标报告者,另外内置Console,JMX,Prometheus,DataDog指标报告者。
- 新增Data Snapshot Exporter工具类,通过该工具类可将某一时刻的Hudi表导出为Parquet文件。
- 引入写入提交回调钩子,以便在Commit时可以通知增量pipelines,例如在新的commit到来后触发Apache Airflow作业。
- 支持通过CLI删除Savepoints。
- 新增命令
export instants
来导出instant元数据。
4. 贡献者
感谢以下贡献者,排名不分先后
hddong, xushiyan, wangxianghu, shenh062326, prashantwason, bvaradar, vinothchandar, baobaoyeye, andreitaleanu, clocklear , linshan-ma, satishkotha, Trevor-zhang, pratyakshsharma, GuoPhilipse, nsivabalan, zhedoubushishi, umehrot2, lw309637554, DeyinZhong, zherenyu831, lamber-ken, garyli1019, bhasudha, n3nash, yihua, liujinhui1994, sreeram26, Yungthuis, cheshta2904, [leesf](
Apache Hudi 0.6.0版本重磅发布的更多相关文章
- Apache Hudi 0.5.1版本重磅发布
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...
- Apache Hudi 0.8.0版本重磅发布
1. 重点特性 1.1 Flink集成 自从Hudi 0.7.0版本支持Flink写入后,Hudi社区又进一步完善了Flink和Hudi的集成.包括重新设计性能更好.扩展性更好.基于Flink状态索引 ...
- Apache Hudi 0.7.0版本重磅发布
重点特性 1. Clustering 0.7.0版本中支持了对Hudi表数据进行Clustering(对数据按照数据特征进行聚簇,以便优化文件大小和数据布局),Clustering提供了更灵活地方式增 ...
- Flutter 1.17版本重磅发布
Flutter 1.17 是2020年的第一个稳定版本,此版本包括iOS平台Metal支持(性能更快),新的Material组件,新的Network跟踪工具等等! 对所有人来说,今年是充满挑战的一年. ...
- 重磅!Vertica集成Apache Hudi指南
1. 摘要 本文演示了使用外部表集成 Vertica 和 Apache Hudi. 在演示中我们使用 Spark 上的 Apache Hudi 将数据摄取到 S3 中,并使用 Vertica 外部表访 ...
- 官宣!ASF官方正式宣布Apache Hudi成为顶级项目
马萨诸塞州韦克菲尔德(Wakefield,MA)- 2020年6月 - Apache软件基金会(ASF).350多个开源项目和全职开发人员.管理人员和孵化器宣布:Apache Hudi正式成为Apac ...
- Apache Hudi C位!云计算一哥AWS EMR 2020年度回顾
1. 概述 成千上万的客户在Amazon EMR上使用Apache Spark,Apache Hive,Apache HBase,Apache Flink,Apache Hudi和Presto运行大规 ...
- 真香!PySpark整合Apache Hudi实战
1. 准备 Hudi支持Spark-2.x版本,你可以点击如下链接安装Spark,并使用pyspark启动 # pyspark export PYSPARK_PYTHON=$(which python ...
- Apache Hudi异步Compaction方式汇总
本篇文章对执行异步Compaction的不同部署模型一探究竟. 1. Compaction 对于Merge-On-Read表,数据使用列式Parquet文件和行式Avro文件存储,更新被记录到增量文件 ...
随机推荐
- 线程_gevent实现多个视频下载及并发下载
from gevent import monkey import gevent import urllib.request #有IO操作时,使用patch_all自动切换 monkey.patch_a ...
- PHP easter_days() 函数
------------恢复内容开始------------ 实例 输出不同年份的复活节与 3 月 21 日之间的天数: <?phpecho "Easter Day is " ...
- PHP parse_ini_file() 函数
定义和用法 parse_ini_file() 函数解析一个配置文件(ini 文件),并以数组的形式返回其中的设置. 语法 parse_ini_file(file,process_sections) 参 ...
- Qt 之 Graphics View Framework 简介
Graphics View Framework 交互式 2D 图形的 Graphics View 框架概述.自 Qt4.2 中引入了 Graphics View,以取代其前身 QCanvas.Grap ...
- [转]Spring Security架构
作者:before31原文:https://my.oschina.net/xuezi/blog/3126351 本指南是Spring Security的入门,它提供了对该框架的设计和基本构建的见解.我 ...
- 04-Thread的生命周期
图示: 说明: 1.生命周期关注两个概念:状态.相应的方法 2.关注:状态a-->状态b:哪些方法执行了(回调方法) 某个方法主动调用:状态a-->状态b 3.阻塞:临时状态,不可以作为最 ...
- 如何利用Python在网上接单,兼职也能月薪过万
- 用Python快速实现视频的人脸融合
- NIO(三):Selector选择器
一.堵塞式与非堵塞式 在传统IO中,将数据由当前线程从客户端传入服务端,由服务端的内核进行判断传过来的数据是否合法,内核中是否存在数据. 如果不存在数据 ,并且数据并不合法,当前线程将会堵塞等待.当前 ...
- PHP基础之查找
前言 之前的文章介绍了PHP的运算符.流程控制.函数.排序等.有兴趣可以去看看. PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 PHP入门之数组 PHP基础之排序 下面简单介绍一下 ...