删除数据

Hudi支持对存储在Hudi表中的数据实现两种类型的删除,允许用户指定不同的记录负载实现:

1) 软删除:保留记录键,并将所有其他字段的值清空。这可以通过确保适当的字段在表模式中为空,并在将这些字段设置为空后简单地upsert表来实现。

2) 硬删除:更强的删除形式是从表中物理地删除记录的任何痕迹。这可以通过3种不同的方式实现。

  • (1) 使用数据源,设置OPERATION_OPT_KEY为DELETE_OPERATION_OPT_VAL。这将删除被提交的数据集中的所有记录。
  • (2) 使用数据源,设置PAYLOAD_CLASS_OPT_KEY的值为org.apache.hudi.EmptyHoodieRecordPayload。这将删除被提交的数据集中的所有记录。
  • (3) 使用数据源或DeltaStreamer,将名为_hoodie_is_deleted的列添加到数据集。对于所有要删除的记录,该列的值必须设置为true,对于任何要被upsert的记录,该列的值要么设置为false,要么设置为null。

对于其中硬删除的第三种方式,假设有原始模式内容如下:

{
  "type":"record",
  "name":"example_tbl",
  "fields":[{
     "name": "uuid",
     "type": "String"
  }, {
     "name": "ts",
     "type": "string"
  },  {
     "name": "partitionPath",
     "type": "string"
  }, {
     "name": "rank", ......
          

......

抱歉,只有登录会员才可浏览!会员登录


《Flink原理深入与编程实战》