1. 下载信息

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 V2AlluxioTencent 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版本重磅发布的更多相关文章

  1. Apache Hudi 0.5.1版本重磅发布

    历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...

  2. Apache Hudi 0.8.0版本重磅发布

    1. 重点特性 1.1 Flink集成 自从Hudi 0.7.0版本支持Flink写入后,Hudi社区又进一步完善了Flink和Hudi的集成.包括重新设计性能更好.扩展性更好.基于Flink状态索引 ...

  3. Apache Hudi 0.7.0版本重磅发布

    重点特性 1. Clustering 0.7.0版本中支持了对Hudi表数据进行Clustering(对数据按照数据特征进行聚簇,以便优化文件大小和数据布局),Clustering提供了更灵活地方式增 ...

  4. Flutter 1.17版本重磅发布

    Flutter 1.17 是2020年的第一个稳定版本,此版本包括iOS平台Metal支持(性能更快),新的Material组件,新的Network跟踪工具等等! 对所有人来说,今年是充满挑战的一年. ...

  5. 重磅!Vertica集成Apache Hudi指南

    1. 摘要 本文演示了使用外部表集成 Vertica 和 Apache Hudi. 在演示中我们使用 Spark 上的 Apache Hudi 将数据摄取到 S3 中,并使用 Vertica 外部表访 ...

  6. 官宣!ASF官方正式宣布Apache Hudi成为顶级项目

    马萨诸塞州韦克菲尔德(Wakefield,MA)- 2020年6月 - Apache软件基金会(ASF).350多个开源项目和全职开发人员.管理人员和孵化器宣布:Apache Hudi正式成为Apac ...

  7. Apache Hudi C位!云计算一哥AWS EMR 2020年度回顾

    1. 概述 成千上万的客户在Amazon EMR上使用Apache Spark,Apache Hive,Apache HBase,Apache Flink,Apache Hudi和Presto运行大规 ...

  8. 真香!PySpark整合Apache Hudi实战

    1. 准备 Hudi支持Spark-2.x版本,你可以点击如下链接安装Spark,并使用pyspark启动 # pyspark export PYSPARK_PYTHON=$(which python ...

  9. Apache Hudi异步Compaction方式汇总

    本篇文章对执行异步Compaction的不同部署模型一探究竟. 1. Compaction 对于Merge-On-Read表,数据使用列式Parquet文件和行式Avro文件存储,更新被记录到增量文件 ...

随机推荐

  1. Python for循环使用 else 语句

    Python for循环使用 else 语句: else:当 for 所有的语句代码块正常运行完,才会运行 else 语句. 示例: ''' for 迭代对象 in 序列: 代码块(一行语句或多行代码 ...

  2. PHP curl_multi_remove_handle函数

    (PHP 5) curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源 说明 int curl_multi_remove_handle ( resource ...

  3. PHP str_split() 函数

    实例 把字符串 "Hello" 分割到数组中: <?php print_r(str_split("Hello")); ?>高佣联盟 www.cgew ...

  4. Promise核心基础

    基础 Promise 抽象表达:是js中进行异步编程的新的解决方案 具体解释:1.从语法上来说是一个构造函数 2.从功能上来说promise对象用来封装一个异步操作并可以获取其结果 状态改变:0.ne ...

  5. 5.21 省选模拟赛 luogu P4207 [NOI2005]月下柠檬树 解析几何 自适应辛普森积分法

    LINK:月下柠檬树 之前感觉这道题很鬼畜 实际上 也就想到辛普森积分后就很好做了. 辛普森积分法的式子不再赘述 网上多的是.值得一提的是 这道题利用辛普森积分法的话就是一个解析几何的问题 而并非计算 ...

  6. luogu P2973 [USACO10HOL]Driving Out the Piggies G 驱逐猪猡

    luogu LINK:驱逐猪猡 bzoj LINK:猪猪快跑 问题是在1时刻有个炸蛋在1号点 这个炸弹有p/q的概率爆炸 如果没有爆炸 那么会有1/di的概率选择一条边跳到另外一个点上重复这个过程. ...

  7. 发送ajax请求时候注意的问题

    1.在发送ajax请求一般都是默认为异步,就是不去等待后台响应直接可以继续发送, 但这样会有时候遇到一些问题,无法获得后台的响应参数, 所以在你打开编辑弹出框完成数据编辑后无法刷新页面, 这时候可能存 ...

  8. Asp.Net项目发布 到 IIS、 Core3.1 发布到 IIS CentOS8.x

    摘要:发布项目到IIS或者.Net Core 项目发布到IIS服务器或者CentOS记录一下,后面忘了又来看看. 1.服务器安装IIS 1.1.不管你是本地的电脑还是网上购买的服务器,只要是能通过远程 ...

  9. 10分钟了解js的宏任务和微任务

    熟悉宏任务和微任务以及js(nodejs)事件循环机制,在写业务代码还是自己写库,或者看源码都是那么重要 看了部分文档,自己总结和实践了一下 js中同步任务.宏任务和微任务介绍 同步任务: 普通任务 ...

  10. 没用过消息队列?一文带你体验RabbitMQ收发消息

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 先给大家说声抱歉,最近一周都没有发文,有一些比较要紧重要的事需要处理. 今天正好得空,本来说准备写SpringIOC相关的东西,但是发现想 ...