Hudi cleaning-异步操作

参数配置

设置参数,在建表的时候指定:

配置型 设定值
hoodie.clean.automatic false
hoodie.clean.async true
hoodie.cleaner.commits.retained 1

建表语句

create table small_file_hudi_cow (
  id int,
  name string,
  age int,
  city STRING,
  date_str STRING
) using hudi
tblproperties (
  type = 'cow',
  primaryKey = 'id',
  preCombineField = 'id',
  'hoodie.clean.automatic' = 'false',
  'hoodie.clean.async' = 'true',
  'hoodie.cleaner.commits.retained' = '1'
)
partitioned by (date_str);

操作执行计划

步骤 操作 文件系统 导入或者更新数据的命令
1 insert base file INSERT INTO small_file_hudi_cow SELECT id, name, age, city, event_date FROM sample_data_partitioned where event_date='2023-11-03';
1 update base file INSERT INTO small_file_hudi_cow SELECT id, name, age, city, event_date FROM sample_data_partitioned where event_date='2023-11-03';
1 update base file INSERT INTO small_file_hudi_cow SELECT id, name, age, city, event_date FROM sample_data_partitioned where event_date='2023-11-03';

 第一步insert 

在第一次往表里面插入数据的时候,会产生第一个版本文件和时间记录信息,具体如下:

第二步 update数据

由于数据全量更新第一次的所有数据文件

第三步update 

由于全量更新第一次的所有数据文件,更新后添加对应的一组 file 信息。其文件信息及时间线如下:

第四步 Cleaning

执行脚本:

spark-submit --class org.apache.hudi.utilities.HoodieCleaner /data/axiang/hudi-0.14.0/hudi-bundle/hudi-utilities-bundle_2.12-0.14.0.jar \
  --target-base-path /user/hive/warehouse/axiang_hudi.db/small_file_hudi_cow/ \
  --hoodie-conf hoodie.cleaner.policy=KEEP_LATEST_COMMITS \
  --hoodie-conf hoodie.cleaner.commits.retained=1 \
  --hoodie-conf hoodie.cleaner.parallelism=200 \
  --hoodie-conf hoodie.clean.async=true \
  --hoodie-conf hoodie.clean.automatic=false

执行完成后,会生成一个clean 的时间线。同时删除历史版本的数据。其文件信息及时间线如下:

你可能感兴趣的:(大数据)