You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式访问Hudi指标,获取提交后记录操作统计数据

编程获取Hudi提交后指标实现方案

前置配置补充

你已经配置的hoodie.metrics.on=true和hoodie.metrics.reporter.type=INMEMORY是基础配置,还需要补充开启提交自动收集开关,完整配置如下:

hoodie.metrics.on=true
hoodie.metrics.reporter.type=INMEMORY
# 每次提交完成后自动收集指标到内存Reporter
hoodie.metrics.inmemory.reporter.collect.on.commit=true

实现方案1:通过内存Metrics Reporter读取(适配DataFrame写入场景)

Hudi的INMEMORY类型指标Reporter会将最近一次提交的全量指标缓存在内存中,不需要直接实例化HoodieMetrics对象,通过静态方法即可读取:

Scala示例

import org.apache.hudi.metrics.HoodieInMemoryMetricsReporter
import org.apache.spark.sql.SaveMode

// 原有Hudi写入逻辑
df.write.format("hudi")
  .options(hudiConfig)
  .mode(SaveMode.Append)
  .save(tablePath)

// 写入完成后读取指标
val allMetrics = HoodieInMemoryMetricsReporter.getLatestMetrics
// 提取核心指标,键名可根据实际Hudi版本调整,若取不到可先打印allMetrics全量键值对确认
val insertCount = allMetrics.getOrDefault("commit.totalInsertRecords", 0L)
val updateCount = allMetrics.getOrDefault("commit.totalUpdateRecords", 0L)
val deleteCount = allMetrics.getOrDefault("commit.totalDeleteRecords", 0L)

// 此处可将指标写入你需要留存的数据库

Java示例

import org.apache.hudi.metrics.HoodieInMemoryMetricsReporter;
import java.util.Map;

// 写入逻辑执行完成后
Map<String, Long> allMetrics = HoodieInMemoryMetricsReporter.getLatestMetrics();
long insertCount = allMetrics.getOrDefault("commit.totalInsertRecords", 0L);
long updateCount = allMetrics.getOrDefault("commit.totalUpdateRecords", 0L);
long deleteCount = allMetrics.getOrDefault("commit.totalDeleteRecords", 0L);

实现方案2:通过WriteClient返回元数据读取(适配原生API写入场景)

如果你使用Hudi原生HoodieWriteClient实现写入,不需要开启Metrics配置,直接从提交返回的元数据中即可读取指标:

// 提交写入操作
val writeMetadata = hoodieWriteClient.commit(instantTime, writeStatusList)
// 直接从元数据中获取统计指标
val insertCount = writeMetadata.getCommitMetadata.getStats.getTotalInserts
val updateCount = writeMetadata.getCommitMetadata.getStats.getTotalUpdates
val deleteCount = writeMetadata.getCommitMetadata.getStats.getTotalDeletes

注意事项

  • 若作业内并发写入多个Hudi表,需为每个表单独配置hoodie.metrics.inmemory.reporter.table.name参数,避免不同表的指标互相覆盖
  • 不同Hudi版本的指标键名存在少量差异,若内置键取不到,可先打印全量指标的键值对确认对应命名

内容的提问来源于stack exchange,提问作者Joha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:06