解锁Apache Hudi删除记录新姿势

栏目: IT技术 · 发布时间: 4年前

内容简介:在0.5.1版本之前,用户若想删除某条记录,可以使用Spark DataSource,并将如果应用程序中已经内嵌了HoodieWriteClient,可以直接使用HoodieWriteClient如下API删除记录介绍如何使用Datasource API对示例数据集执行删除的示例。与快速入门中的示例相同。

1. 引入

在0.5.1版本之前,用户若想删除某条记录,可以使用Spark DataSource,并将 DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY 设置为 EmptyHoodieRecordPayload.class.getName ,便可删除指定记录,在Hudi新发布的0.5.1版本,可不使用上述配置项删除记录,而提供三种方式删除记录: Hudi APISpark DataSourceDeltaStreamer ,下面逐一介绍如何使用。

2. 步骤

2.1 使用Hudi API

如果应用程序中已经内嵌了HoodieWriteClient,可以直接使用HoodieWriteClient如下API删除记录

2.2 使用DataSource

介绍如何使用Datasource API对示例数据集执行删除的示例。与快速入门中的示例相同。

1. 启动spark-shell

2. 导入必要的Import

3. 插入数据

4. 查询数据

5. 准备待删除数据集

首先通过查询准备好待删除的数据集

6. 删除数据

7. 验证

重新加载表记录,验证记录是否被删除

2.3 使用DeltaStreamer

使用HoodieDeltaStreamer进行删除与upsert相同,它依赖每个记录中名为“hoodie is deleted”的boolean类型的特定字段。

  • 如果记录的字段值设置为false或不存在,则将其视为常规upsert。

  • 如果不是(如果该值设置为true),则将其视为已删除记录。

这意味着必须更改数据源的schema来添加此字段,并且所有传入记录都应设置此字段值,在未来的版本中我们将尽量放开这点。

如原始数据源的schema如下。

那么要利用DeltaStreamer的删除功能,必须更改schema如下。

upsert传入记录示例数据如下

delete传入记录示例数据如下

只需要进行一次性的变更,DeltasDreamer将处理每批中的upsert和delete,并且每一批都可以包含upsert和deletes的混合,之后不需要额外的步骤或更改。

3. 总结

在Hudi 0.5.1-incubating版本中引入了额外三种删除记录的能力,用户可使用上述任意一种方案来达到删除记录的目的。

解锁Apache Hudi删除记录新姿势

解锁Apache Hudi删除记录新姿势

解锁Apache Hudi删除记录新姿势


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

这才是马云

这才是马云

陈伟 / 浙江人民出版社 / 2011-5 / 30.00元

“幽默马云”、“开心马云”、“顽皮马云”、“狂妄马云”等。《这才是马云》从各个角度揭开了千面马云的真面目,告诉你一个与想象中大不一样的马云。这不只是一本书,更像一部喜剧电影,让你通过声音、色彩、表情等诸多要素走近马云,感受阿里巴巴。没有冗长的说教,只有让人忍俊不禁的细节;没有高深的理论,只有通俗、诚恳的陈述。作者借幽默平常的琐事,记录下马云“可爱”的一面,看完后让人恍然大悟:原来,马云是这样一个人......一起来看看 《这才是马云》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具