- 01 hudi 1.0.1源码编译(常见问题处理)
- 02 hudi 命令大全
- 03 hudi spark sql 客户端命令大全
目录
2.3. show_commit_extra_metadata
2.5. show_archived_commits_metadata
2.7. show_archived_commits_metadata
3. 元数据表管理(Metadata Table management)
3.4. show_metadata_table_partitions
3.5. show_metadata_table_files
3.6. show_metadata_table_stats
3.7. validate_metadata_table_files
5.9. repair_add_partition_meta
5.10. repair_corrupted_clean_files
5.12. repair_migrate_partition_meta
5.13. repair_overwrite_hoodie_props
6.3. show_bootstrap_partitions
1. SQL 存储过程
在使用 Hudi SparkSQL 扩展的所有 Spark 版本中,存储过程是可用的。
1.1. 用法
CALL
支持通过名称(推荐)或位置传递参数。也支持混合使用位置和命名参数。
1.1.1. 命名参数
所有过程参数都有名称。当按名称传递参数时,参数可以按任意顺序排列,并且任何可选参数都可以省略。
sql
CALL system.procedure_name(arg_name_2 => arg_2, arg_name_1 => arg_1, ... arg_name_n => arg_n);
1.1.2. 位置参数
当按位置传递参数时,如果参数是可选的,也可以省略这些参数。
sql
CALL system.procedure_name(arg_1, arg_2, ... arg_n);
注意:这里的“system”没有实际意义,完整的过程名称是 system.procedure_name
。
1.2. 帮助
显示过程的参数和输出类型。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
cmd | String | N | None | 过程的名称 |
输出
输出名称 | 类型 |
result | String |
示例
sql
CALL help(cmd => 'show_commits');
结果
参数:
- param: type_name default_value required
- table: string None true
- limit: integer 10 false
输出类型:
- name: type_name nullable metadata
- commit_time: string true {}
- action: string true {}
- total_bytes_written: long true {}
- total_files_added: long true {}
- total_files_updated: long true {}
- total_partitions_written: long true {}
- total_records_written: long true {}
- total_update_records_written: long true {}
- total_errors: long true {}
2. 提交管理
2.1. show_commits
显示提交的信息。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
输出
输出名称 | 类型 |
commit_time | String |
total_bytes_written | Long |
total_files_added | Long |
total_files_updated | Long |
total_partitions_written | Long |
total_records_written | Long |
total_update_records_written | Long |
total_errors | Long |
示例
sql
# 注意此处的 test_hudi_table 为 同步到hive的外部表名,而非hudi本表
CALL show_commits(table => 'test_hudi_table', limit => 10);
2.2. show_commits_metadata
显示提交的元数据。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
输出
输出名称 | 类型 |
commit_time | String |
action | String |
partition | String |
file_id | String |
previous_commit | String |
num_writes | Long |
num_inserts | Long |
num_deletes | Long |
num_update_writes | String |
total_errors | Long |
total_log_blocks | Long |
total_corrupt_logblocks | Long |
total_rollback_blocks | Long |
total_log_records | Long |
total_updated_records_compacted | Long |
total_bytes_written | Long |
示例
sql
CALL show_commits_metadata(table => 'test_hudi_table');
2.3. show_commit_extra_metadata
显示提交的额外元数据。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
instant_time | String | N | None | 时间戳 |
metadata_key | String | N | None | 元数据的键 |
输出
输出名称 | 类型 |
instant_time | String |
action | String |
metadata_key | String |
metadata_value | String |
示例
sql
CALL show_commit_extra_metadata(table => 'test_hudi_table');
2.4. show_archived_commits
显示已归档的提交。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
start_ts | String | N | "" | 提交的开始时间,默认:现在 - 10天 |
end_ts | String | N | "" | 提交的结束时间,默认:现在 - 1天 |
输出
输出名称 | 类型 |
commit_time | String |
total_bytes_written | Long |
total_files_added | Long |
total_files_updated | Long |
total_partitions_written | Long |
total_records_written | Long |
total_update_records_written | Long |
total_errors | Long |
示例
sql
CALL show_archived_commits(table => 'test_hudi_table');
2.5. show_archived_commits_metadata
显示已归档提交的元数据。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
start_ts | String | N | "" | 提交的开始时间,默认:现在 - 10天 |
end_ts | String | N | "" | 提交的结束时间,默认:现在 - 1天 |
输出
输出名称 | 类型 |
commit_time | String |
action | String |
partition | String |
file_id | String |
previous_commit | String |
num_writes | Long |
num_inserts | Long |
num_deletes | Long |
num_update_writes | String |
total_errors | Long |
total_log_blocks | Long |
total_corrupt_logblocks | Long |
total_rollback_blocks | Long |
total_log_records | Long |
total_updated_records_compacted | Long |
total_bytes_written | Long |
示例
sql
CALL show_archived_commits_metadata(table => 'test_hudi_table');
2.6. show_archived_commits
显示已归档的提交。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
start_ts | String | N | "" | 提交的开始时间,默认:现在 - 10天 |
end_ts | String | N | "" | 提交的结束时间,默认:现在 - 1天 |
输出
输出名称 | 类型 |
commit_time | String |
total_bytes_written | Long |
total_files_added | Long |
total_files_updated | Long |
total_partitions_written | Long |
total_records_written | Long |
total_update_records_written | Long |
total_errors | Long |
示例
sql
CALL show_archived_commits(table => 'test_hudi_table');
2.7. show_archived_commits_metadata
显示已归档提交的元数据。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
start_ts | String | N | "" | 提交的开始时间,默认:现在 - 10天 |
end_ts | String | N | "" | 提交的结束时间,默认:现在 - 1天 |
输出
输出名称 | 类型 |
commit_time | String |
action | String |
partition | String |
file_id | String |
previous_commit | String |
num_writes | Long |
num_inserts | Long |
num_deletes | Long |
num_update_writes | String |
total_errors | Long |
total_log_blocks | Long |
total_corrupt_logblocks | Long |
total_rollback_blocks | Long |
total_log_records | Long |
total_updated_records_compacted | Long |
total_bytes_written | Long |
示例
sql
CALL show_archived_commits_metadata(table => 'test_hudi_table');
2.8. show_commit_files
显示提交的文件。
输入
参数名称 | 类型 | 必须 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的记录最大数量 |
instant_time | String | Y | None | 时间戳 |
输出
输出名称 | 类型 |
action | String |
partition_path | String |
file_id | String |
previous_commit | String |
total_records_updated | Long |
total_records_written | Long |
total_bytes_written | Long |
total_errors | Long |
示例
sql
CALL show_commit_files(table => 'test_hudi_table', instant_time => '20230206174349556');
2.9. show_commit_partitions
显示提交的分区信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的最大记录数 |
instant_time | String | Y | None | 事务时间点 |
输出字段
输出名称 | 类型 |
action | String |
partition_path | String |
total_files_added | Long |
total_files_updated | Long |
total_records_inserted | Long |
total_records_updated | Long |
total_bytes_written | Long |
total_errors | Long |
示例
call show_commit_partitions(table => 'test_hudi_table', instant_time => '20230206174349556');
2.10. show_commit_write_stats
显示提交的写入统计信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的最大记录数 |
instant_time | String | Y | None | 事务时间点 |
输出字段
输出名称 | 类型 |
action | String |
total_bytes_written | Long |
total_records_written | Long |
avg_record_size | Long |
示例
call show_commit_write_stats(table => 'test_hudi_table', instant_time => '20230206174349556');
2.11. show_rollbacks
显示回滚的提交记录。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
instant | String |
rollback_instant | String |
total_files_deleted | Int |
time_taken_in_millis | Long |
total_partitions | Int |
示例
call show_rollbacks(table => 'test_hudi_table');
2.12. show_rollback_detail
显示回滚提交的详细信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的最大记录数 |
instant_time | String | Y | None | 事务时间点 |
输出字段
输出名称 | 类型 |
instant | String |
rollback_instant | String |
partition | String |
deleted_file | String |
succeeded | Int |
示例
call show_rollback_detail(table => 'test_hudi_table', instant_time => '20230206174349556');
2.13. commits_compare
比较提交记录与另一个路径的差异。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
path | String | Y | None | 表的路径 |
输出字段
输出名称 | 类型 |
compare_detail | String |
示例
call commits_compare(table => 'test_hudi_table', path => 'hdfs://ns1/hive/warehouse/hudi.db/test_hudi_table');
2.14. archive_commits
归档提交记录。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | N | None | Hudi 表名 |
path | String | N | None | 表的路径 |
min_commits | Int | N | 20 | 保留的最小事务数量 |
max_commits | Int | N | 30 | 保留的最大事务数量 |
retain_commits | Int | N | 10 | 归档批量大小 |
enable_metadata | Boolean | N | false | 是否启用元数据表 |
输出字段
输出名称 | 类型 |
result | Int |
示例
call archive_commits(table => 'test_hudi_table');
2.15. export_instants
导出事务记录到本地文件夹。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
local_folder | String | Y | None | 本地文件夹路径 |
limit | Int | N | -1 | 导出的事务记录数 |
actions | String | N | clean,commit,deltacommit,rollback,savepoint,restore | 事务类型 |
desc | Boolean | N | false | 是否降序排列 |
输出字段
输出名称 | 类型 |
export_detail | String |
示例
call export_instants(table => 'test_hudi_table', local_folder => '/tmp/folder');
2.16. rollback_to_instant
回滚表到指定的提交点。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
rollback_result | Boolean |
示例
call rollback_to_instant(table => 'test_hudi_table', instant_time => '20220109225319449');
2.17. create_savepoint
在 Hudi 表上创建保存点。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
commit_time | String | Y | None | 提交时间 |
user | String | N | "" | 用户名 |
comments | String | N | "" | 备注 |
输出字段
输出名称 | 类型 |
create_savepoint_result | Boolean |
示例
call create_savepoint(table => 'test_hudi_table', commit_time => '20220109225319449');
2.18. show_savepoints
显示保存点。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
savepoint_time | String |
示例
call show_savepoints(table => 'test_hudi_table');
2.19. delete_savepoint
删除 Hudi 表中的保存点。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
instant_time | String | Y | None | 事务时间点 |
输出字段
输出名称 | 类型 |
delete_savepoint_result | Boolean |
示例
call delete_savepoint(table => 'test_hudi_table', instant_time => '20220109225319449');
2.20. rollback_to_savepoint
将表回滚到某个保存点的提交状态。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
instant_time | String | Y | None | 事务时间点 |
输出字段
输出名称 | 类型 |
rollback_savepoint_result | Boolean |
示例
call rollback_to_savepoint(table => 'test_hudi_table', instant_time => '20220109225319449');
2.21. copy_to_temp_view
将表复制到临时视图。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
query_type | String | N | "snapshot" | 读取数据模式:增量模式(incremental)、优化读取模式(read_optimized)或快照模式(snapshot) |
view_name | String | Y | None | 视图名称 |
begin_instance_time | String | N | "" | 开始时间点 |
end_instance_time | String | N | "" | 结束时间点 |
as_of_instant | String | N | "" | 具体时间点 |
replace | Boolean | N | false | 是否替换已存在的视图 |
global | Boolean | N | false | 是否创建全局视图 |
输出字段
输出名称 | 类型 |
status | Boolean |
示例
call copy_to_temp_view(table => 'test_hudi_table', view_name => 'copy_view_test_hudi_table');
2.22. copy_to_table
将表复制到新表。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
query_type | String | N | "snapshot" | 读取数据模式:增量模式(incremental)、优化读取模式(read_optimized)或快照模式(snapshot) |
new_table | String | Y | None | 新表名称 |
begin_instance_time | String | N | "" | 开始时间点 |
end_instance_time | String | N | "" | 结束时间点 |
as_of_instant | String | N | "" | 具体时间点 |
save_mode | String | N | "overwrite" | 保存模式 |
columns | String | N | "" | 需要复制到新表的源表列 |
输出字段
输出名称 | 类型 |
status | Boolean |
示例
call copy_to_table(table => 'test_hudi_table', new_table => 'copy_table_test_hudi_table');
3. 元数据表管理(Metadata Table management)
3.1. create_metadata_table
创建 Hudi 表的元数据表。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
result | String |
示例
call create_metadata_table(table => 'test_hudi_table');
3.2. init_metadata_table
初始化 Hudi 表的元数据表。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
read_only | Boolean | N | false | 是否为只读 |
输出字段
输出名称 | 类型 |
result | String |
示例
call init_metadata_table(table => 'test_hudi_table');
3.3. delete_metadata_table
删除 Hudi 表的元数据表。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
result | String |
示例
call delete_metadata_table(table => 'test_hudi_table');
3.4. show_metadata_table_partitions
显示 Hudi 表的分区。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
partition | String |
示例
call show_metadata_table_partitions(table => 'test_hudi_table');
3.5. show_metadata_table_files
显示 Hudi 表的文件信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
partition | String | N | "" | 分区名称 |
limit | Int | N | 100 | 限制返回数量 |
输出字段
输出名称 | 类型 |
file_path | String |
示例
call show_metadata_table_files(table => 'test_hudi_table', partition => 'dt=20230220');
3.6. show_metadata_table_stats
显示 Hudi 表的元数据统计信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
输出字段
输出名称 | 类型 |
stat_key | String |
stat_value | String |
示例
call show_metadata_table_stats(table => 'test_hudi_table');
validate_metadata_table_files
验证 Hudi 表的元数据文件。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
verbose | Boolean | N | False | 是否详细打印所有文件信息 |
输出字段
输出名称 | 类型 |
partition | String |
file_name | String |
is_present_in_fs | Boolean |
is_present_in_metadata | Boolean |
fs_size | Long |
metadata_size | Long |
示例
call validate_metadata_table_files(table => 'test_hudi_table');
3.7. validate_metadata_table_files
验证 Hudi 表的元数据文件。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
verbose | Boolean | N | False | 是否详细打印所有文件信息 |
输出字段
输出名称 | 类型 |
partition | String |
file_name | String |
is_present_in_fs | Boolean |
is_present_in_metadata | Boolean |
fs_size | Long |
metadata_size | Long |
示例
sql
复制编辑
call validate_metadata_table_files(table => 'test_hudi_table');
4. 表信息管理(Table Information)
4.1. show_table_properties
显示 Hudi 表的属性信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
path | String | N | None | 表的路径 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
key | String |
value | String |
示例
call show_table_properties(table => 'test_hudi_table', limit => 10);
4.2. show_fs_path_detail
显示指定路径的详细信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
path | String | Y | None | Hudi 表路径 |
is_sub | Boolean | N | false | 是否列出文件 |
sort | Boolean | N | true | 是否按存储大小排序 |
limit | Int | N | 100 | 限制返回数量 |
输出字段
输出名称 | 类型 |
path_num | Long |
file_num | Long |
storage_size | Long |
storage_size(unit) | String |
storage_path | String |
space_consumed | Long |
quota | Long |
space_quota | Long |
示例
call show_fs_path_detail(path => 'hdfs://ns1/hive/warehouse/hudi.db/test_hudi_table');
4.3. stats_file_sizes
显示 Hudi 表中文件大小的统计信息。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
partition_path | String | N | "" | 分区路径 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
commit_time | String |
min | Long |
10th | Double |
50th | Double |
avg | Double |
95th | Double |
max | Long |
num_files | Int |
std_dev | Double |
示例
call stats_file_sizes(table => 'test_hudi_table');
4.4. stats_wa
显示 Hudi 表的写入统计信息和写放大系数。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
commit_time | String |
total_upserted | Long |
total_written | Long |
write_amplification_factor | String |
示例
call stats_wa(table => 'test_hudi_table');
4.5. show_logfile_records
显示 Hudi 表日志文件中的记录。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
log_file_path_pattern | String | Y | 10 | 日志文件的路径模式 |
merge | Boolean | N | false | 是否合并结果 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
records | String |
示例
call show_logfile_records(table => 'test_hudi_table', log_file_path_pattern => 'hdfs://ns1/hive/warehouse/hudi.db/test_hudi_table/*.log*');
4.6. show_logfile_metadata
显示 Hudi 表日志文件的元数据。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
log_file_path_pattern | String | Y | 10 | 日志文件的路径模式 |
merge | Boolean | N | false | 是否合并结果 |
limit | Int | N | 10 | 返回的最大记录数 |
输出字段
输出名称 | 类型 |
instant_time | String |
record_count | Int |
block_type | String |
header_metadata | String |
footer_metadata | String |
示例
call show_logfile_metadata(table => 'hudi_mor_tbl', log_file_path_pattern => 'hdfs://ns1/hive/warehouse/hudi.db/hudi_mor_tbl/*.log*');
4.7. show_invalid_parquet
显示 Hudi 表中的无效 Parquet 文件。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
Path | String | Y | None | Hudi 表路径 |
limit | Int | N | 100 | 限制返回数量 |
needDelete | Boolean | N | false | 是否删除无效文件 |
输出字段
输出名称 | 类型 |
Path | String |
示例
call show_invalid_parquet(path => 'hdfs://ns1/hive/warehouse/hudi.db/test_hudi_table');
4.8. show_fsview_all
显示 Hudi 表的文件系统视图。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
max_instant | String | N | "" | 最大事务时间 |
include_max | Boolean | N | false | 是否包含最大事务 |
include_in_flight | Boolean | N | false | 是否包含正在进行的事务 |
exclude_compaction | Boolean | N | false | 是否排除合并 |
limit | Int | N | 10 | 返回的最大记录数 |
path_regex | String | N | "ALL_PARTITIONS" | 路径模式 |
输出字段
输出名称 | 类型 |
partition | String |
file_id | String |
base_instant | String |
data_file | String |
data_file_size | Long |
num_delta_files | Long |
total_delta_file_size | Long |
delta_files | String |
示例
call show_fsview_all(table => 'test_hudi_table');
4.9. show_fsview_latest
显示 Hudi 表的最新文件系统视图。
输入参数
参数名称 | 类型 | 必填 | 默认值 | 描述 |
table | String | Y | None | Hudi 表名 |
max_instant | String | N | "" | 最大事务时间 |
include_max | Boolean | N | false | 是否包含最大事务 |
include_in_flight | Boolean | N | false | 是否包含正在进行的事务 |
exclude_compaction | Boolean | N | false | 是否排除合并 |
path_regex | String | N | "ALL_PARTITIONS" | 路径模式 |
partition_path | String | N | "ALL_PARTITIONS" | 分区路径 |
merge | Boolean | N | false | 是否合并结果 |
示例
call show_fsview_latest(table => 'test_hudi_table', partition => 'dt=2021-05-03');
5. 表服务(Table Services)
5.1. run_clustering
在 Hudi 表上触发 Clustering 操作。可以使用分区谓词(partition predicates)在指定的分区上执行 Clustering,并且可以指定排序列对数据进行排序。
注意
- 每次调用都会生成新的 Clustering Instant,或者执行一些待处理的 Clustering Instants。
- 在调用此过程时,至少需要指定
table
或path
参数中的一个。如果同时提供了这两个参数,则table
参数将生效。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要执行 Clustering 的表名 |
path | String | 否 | None | 需要执行 Clustering 的表路径 |
predicate | String | 否 | None | 用于筛选分区的谓词 |
order | String | 否 | None | 以逗号分隔的排序列 |
show_involved_partition | Boolean | 否 | false | 是否在输出中显示涉及的分区 |
op | String | 否 | None | 操作类型,可选值 或 |
order_strategy | String | 否 | None | 记录的布局优化策略,可选值 |
options | String | 否 | None | 自定义 Hudi 配置项,格式 |
instants | String | 否 | None | 指定的 Clustering Instant,以逗号分隔 |
selected_partitions | String | 否 | None | 仅在这些分区上执行 Clustering,以逗号分隔 |
limit | Int | 否 | None | 要执行的最大计划数 |
输出参数
参数名称 | 类型 | 描述 |
timestamp | String | Instant 名称 |
input_group_size | Int | 每个计划的输入组大小 |
state | String | Instant 的最终状态 |
involved_partitions | String | 受影响的分区,默认 |
示例
call run_clustering(table => 'test_hudi_table');
5.2. show_clustering
显示 Hudi 表上的待处理 Clustering 任务。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要查询 Clustering 的表名 |
path | String | 否 | None | 需要查询 Clustering 的表路径 |
limit | Int | 否 | None | 要返回的最大记录数 |
输出参数
参数名称 | 类型 | 描述 |
timestamp | String | Instant 时间 |
groups | Int | 需要处理的文件组数 |
示例
call show_clustering(table => 'test_hudi_table');
5.3. run_compaction
在 Hudi 表上调度或执行 Compaction。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
op | String | 否 | None | 操作类型,可选值 或 |
table | String | 否 | None | 需要执行 Compaction 的表名 |
path | String | 否 | None | 需要执行 Compaction 的表路径 |
timestamp | String | 否 | None | 指定的 Instant 时间 |
options | String | 否 | None | 逗号分隔的 Hudi Compaction 配置项 |
输出参数
参数名称 | 类型 | 描述 |
instant | String | Instant 名称 |
示例
call run_compaction(op => 'run', table => 'test_hudi_table');
5.4. show_compaction
显示 Hudi 表上的所有 Compaction,包括进行中的和已完成的 Compaction,并按触发时间逆序排列。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要查询 Compaction 的表名 |
path | String | 否 | None | 需要查询 Compaction 的表路径 |
limit | Int | 否 | None | 要返回的最大记录数 |
输出参数
参数名称 | 类型 | 描述 |
timestamp | String | Instant 时间 |
action | String | Compaction 操作名称 |
size | Int | 需要进行 Compaction 的文件切片数量 |
示例
call show_compaction(table => 'test_hudi_table');
5.5. run_clean
在 Hudi 表上执行清理(Clean)操作。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要执行 Clean 的表名 |
clean_policy | String | 否 | None | 清理策略 |
options | String | 否 | None | 逗号分隔的 Hudi 清理配置项 |
输出参数
参数名称 | 类型 | 描述 |
instant | String | Instant 名称 |
示例
call run_clean(table => 'test_hudi_table');
5.6. delete_marker
删除 Hudi 表上的 Marker 文件。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要删除 Marker 的表名 |
path | String | 否 | None | 需要删除 Marker 的表路径 |
示例
call delete_marker(table => 'test_hudi_table');
5.7. hive_sync
将 Hudi 表同步到 Hive。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 需要同步的 Hudi 表名 |
jdbc_url | String | 是 | None | 连接 Hive Metastore 的 JDBC URL |
示例
call hive_sync(table => 'test_hudi_table', jdbc_url => 'jdbc:hive2://localhost:10000');
5.8. hdfs_parquet_import
将 HDFS 上的 Parquet 文件导入 Hudi 表。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 否 | None | 目标 Hudi 表名 |
src_path | String | 是 | None | 源 Parquet 文件所在路径 |
示例
call hdfs_parquet_import(table => 'test_hudi_table', src_path => '/data/parquet_files');
5.9. repair_add_partition_meta
修复 Hudi 表的分区元数据。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
dry_run | Boolean | 否 | true | 是否执行 dry run(模拟运行) |
输出参数
参数名称 | 类型 |
partition_path | String |
metadata_is_present | String |
action | String |
示例
call repair_add_partition_meta(table => 'test_hudi_table');
5.10. repair_corrupted_clean_files
修复 Hudi 表中的损坏的清理文件。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
输出参数
参数名称 | 类型 |
result | Boolean |
示例
call repair_corrupted_clean_files(table => 'test_hudi_table');
5.11. repair_deduplicate
修复 Hudi 表中的重复记录。该作业会去重 duplicated_partition_path
目录中的数据,并将其写入 repaired_output_path
。作业完成后,repaired_output_path
的数据将被复制回 duplicated_partition_path
。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
duplicated_partition_path | String | 是 | None | 存在重复数据的分区路径 |
repaired_output_path | String | 是 | None | 修复后的数据输出路径 |
dry_run | Boolean | 否 | true | 是否执行 dry run(模拟运行) |
dedupe_type | String | 否 | "insert_type" | 去重类型 |
输出参数
参数名称 | 类型 |
result | String |
示例
call repair_deduplicate(table => 'test_hudi_table', duplicated_partition_path => 'dt=2021-05-03', repaired_output_path => '/tmp/repair_path/');
5.12. repair_migrate_partition_meta
降级 Hudi 表的分区元数据。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
dry_run | Boolean | 否 | true | 是否执行 dry run(模拟运行) |
输出参数
参数名称 | 类型 |
partition_path | String |
text_metafile_present | String |
base_metafile_present | String |
action | String |
示例
call repair_migrate_partition_meta(table => 'test_hudi_table');
5.13. repair_overwrite_hoodie_props
覆盖 Hudi 表的属性文件。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
new_props_file_path | String | 是 | None | 新属性文件的路径 |
输出参数
参数名称 | 类型 |
property | String |
old_value | String |
new_value | String |
示例
call repair_overwrite_hoodie_props(table => 'test_hudi_table', new_props_file_path => '/tmp/props');
6. 引导(Bootstrap)
6.1. run_bootstrap
将现有表转换为 Hudi 表。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | 需要执行引导的表名 |
table_type | String | 是 | None | 表类型,可选 或 |
bootstrap_path | String | 是 | None | 需要引导为 Hudi 表的数据集的基础路径 |
base_path | String | 是 | None | Hudi 表的基础路径 |
rowKey_field | String | 是 | None | 主键字段 |
base_file_format | String | 否 | "PARQUET" | 基础文件格式 |
partition_path_field | String | 否 | "" | 分区字段 |
bootstrap_overwrite | Boolean | 否 | false | 是否覆盖引导路径 |
输出参数
参数名称 | 类型 |
status | Boolean |
示例
call run_bootstrap(table => 'test_hudi_table', table_type => 'COPY_ON_WRITE', bootstrap_path => 'hdfs://ns1/hive/warehouse/hudi.db/test_hudi_table', base_path => 'hdfs://ns1//tmp/hoodie/test_hudi_table', rowKey_field => 'id', partition_path_field => 'dt', bootstrap_overwrite => true);
6.2. show_bootstrap_mapping
显示引导表的映射文件。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | 需要查询的 Hudi 表名 |
输出参数
参数名称 | 类型 |
partition | String |
file_id | Int |
source_base_path | String |
source_partition | Int |
source_file | String |
示例
call show_bootstrap_mapping(table => 'test_hudi_table');
6.3. show_bootstrap_partitions
显示引导表的分区。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | 需要查询的 Hudi 表名 |
输出参数
参数名称 | 类型 |
indexed_partitions | String |
示例
call show_bootstrap_partitions(table => 'test_hudi_table');
7. 版本管理(Version Management)
7.1. upgrade_table
升级 Hudi 表至指定版本。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
to_version | String | 是 | None | 目标 Hudi 版本 |
输出参数
参数名称 | 类型 |
result | Boolean |
示例
call upgrade_table(table => 'test_hudi_table', to_version => 'FIVE');
7.2. downgrade_table
降级 Hudi 表至指定版本。
输入参数
参数名称 | 类型 | 必需 | 默认值 | 描述 |
table | String | 是 | None | Hudi 表名 |
to_version | String | 是 | None | 目标 Hudi 版本 |
输出参数
参数名称 | 类型 |
result | Boolean |
示例
call downgrade_table(table => 'test_hudi_table', to_version => 'FOUR');