This is an automated email from the ASF dual-hosted git repository.
yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new dbc6ac50aec [HUDI-7395] Fix computation for metrics in
HoodieMetadataMetrics (#10641)
dbc6ac50aec is described below
commit dbc6ac50aec2f9724c46d67c0ab4a3f9b2489b75
Author: Lokesh Jain <[email protected]>
AuthorDate: Mon Jun 24 04:40:16 2024 +0530
[HUDI-7395] Fix computation for metrics in HoodieMetadataMetrics (#10641)
---
.../apache/hudi/metadata/HoodieBackedTableMetadataWriter.java | 8 ++++----
.../java/org/apache/hudi/metadata/HoodieMetadataWriteUtils.java | 5 +++++
.../main/java/org/apache/hudi/metadata/BaseTableMetadata.java | 9 +++++----
.../java/org/apache/hudi/metadata/HoodieMetadataMetrics.java | 9 ++++++---
4 files changed, 20 insertions(+), 11 deletions(-)
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieBackedTableMetadataWriter.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieBackedTableMetadataWriter.java
index 8dc738b59ed..89d21e79b22 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieBackedTableMetadataWriter.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieBackedTableMetadataWriter.java
@@ -299,7 +299,7 @@ public abstract class HoodieBackedTableMetadataWriter<I>
implements HoodieTableM
}
if (reInitialize) {
- metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.REBOOTSTRAP_STR, 1));
+ metrics.ifPresent(m ->
m.incrementMetric(HoodieMetadataMetrics.REBOOTSTRAP_STR, 1));
LOG.info("Deleting Metadata Table directory so that it can be
re-initialized");
HoodieTableMetadataUtil.deleteMetadataTable(dataMetaClient,
engineContext, false);
exists = false;
@@ -1484,11 +1484,11 @@ public abstract class
HoodieBackedTableMetadataWriter<I> implements HoodieTableM
throw e;
} finally {
long timeSpent = metadataTableServicesTimer.endTimer();
- metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_DURATION,
timeSpent));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_DURATION, timeSpent));
if (allTableServicesExecutedSuccessfullyOrSkipped) {
- metrics.ifPresent(m ->
m.incrementMetric(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_STATUS, 1));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_STATUS, 1));
} else {
- metrics.ifPresent(m ->
m.incrementMetric(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_STATUS, -1));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.TABLE_SERVICE_EXECUTION_STATUS, -1));
}
}
}
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataWriteUtils.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataWriteUtils.java
index bd4c82a2d84..3caff83eb05 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataWriteUtils.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataWriteUtils.java
@@ -48,6 +48,7 @@ import java.util.Properties;
import static
org.apache.hudi.common.config.HoodieMetadataConfig.DEFAULT_METADATA_ASYNC_CLEAN;
import static
org.apache.hudi.common.config.HoodieMetadataConfig.DEFAULT_METADATA_CLEANER_COMMITS_RETAINED;
import static
org.apache.hudi.common.config.HoodieMetadataConfig.DEFAULT_METADATA_POPULATE_META_FIELDS;
+import static org.apache.hudi.common.util.StringUtils.nonEmpty;
import static
org.apache.hudi.metadata.HoodieTableMetadata.METADATA_TABLE_NAME_SUFFIX;
/**
@@ -160,6 +161,10 @@ public class HoodieMetadataWriteUtils {
final Properties properties = new Properties();
properties.put(HoodieTableConfig.RECORDKEY_FIELDS.key(),
RECORD_KEY_FIELD_NAME);
properties.put("hoodie.datasource.write.recordkey.field",
RECORD_KEY_FIELD_NAME);
+ if (nonEmpty(writeConfig.getMetricReporterMetricsNamePrefix())) {
+ properties.put(HoodieMetricsConfig.METRICS_REPORTER_PREFIX.key(),
+ writeConfig.getMetricReporterMetricsNamePrefix() +
METADATA_TABLE_NAME_SUFFIX);
+ }
builder.withProperties(properties);
if (writeConfig.isMetricsOn()) {
diff --git
a/hudi-common/src/main/java/org/apache/hudi/metadata/BaseTableMetadata.java
b/hudi-common/src/main/java/org/apache/hudi/metadata/BaseTableMetadata.java
index 633ab7cd1da..bc858a2a15e 100644
--- a/hudi-common/src/main/java/org/apache/hudi/metadata/BaseTableMetadata.java
+++ b/hudi-common/src/main/java/org/apache/hudi/metadata/BaseTableMetadata.java
@@ -207,8 +207,8 @@ public abstract class BaseTableMetadata extends
AbstractHoodieTableMetadata {
List<String> partitionIDFileIDStringsList = new
ArrayList<>(partitionIDFileIDStrings);
Map<String, HoodieRecord<HoodieMetadataPayload>> hoodieRecords =
getRecordsByKeys(partitionIDFileIDStringsList,
MetadataPartitionType.BLOOM_FILTERS.getPartitionPath());
- metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_BLOOM_FILTERS_METADATA_STR,
- (timer.endTimer() / partitionIDFileIDStrings.size())));
+ metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_BLOOM_FILTERS_METADATA_STR,
timer.endTimer()));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.LOOKUP_BLOOM_FILTERS_FILE_COUNT_STR,
partitionIDFileIDStringsList.size()));
Map<Pair<String, String>, BloomFilter> partitionFileToBloomFilterMap = new
HashMap<>(hoodieRecords.size());
for (final Map.Entry<String, HoodieRecord<HoodieMetadataPayload>> entry :
hoodieRecords.entrySet()) {
@@ -259,6 +259,7 @@ public abstract class BaseTableMetadata extends
AbstractHoodieTableMetadata {
Map<String, HoodieRecord<HoodieMetadataPayload>> hoodieRecords =
getRecordsByKeys(columnStatKeylist,
MetadataPartitionType.COLUMN_STATS.getPartitionPath());
metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_COLUMN_STATS_METADATA_STR,
timer.endTimer()));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.LOOKUP_COLUMN_STATS_FILE_COUNT_STR,
columnStatKeylist.size()));
Map<Pair<String, String>, HoodieMetadataColumnStats> fileToColumnStatMap =
new HashMap<>();
for (final Map.Entry<String, HoodieRecord<HoodieMetadataPayload>> entry :
hoodieRecords.entrySet()) {
@@ -306,8 +307,8 @@ public abstract class BaseTableMetadata extends
AbstractHoodieTableMetadata {
}));
metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_RECORD_INDEX_TIME_STR,
timer.endTimer()));
- metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_RECORD_INDEX_KEYS_COUNT_STR,
recordKeys.size()));
- metrics.ifPresent(m ->
m.updateMetrics(HoodieMetadataMetrics.LOOKUP_RECORD_INDEX_KEYS_HITS_COUNT_STR,
recordKeyToLocation.size()));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.LOOKUP_RECORD_INDEX_KEYS_COUNT_STR,
recordKeys.size()));
+ metrics.ifPresent(m ->
m.setMetric(HoodieMetadataMetrics.LOOKUP_RECORD_INDEX_KEYS_HITS_COUNT_STR,
recordKeyToLocation.size()));
return recordKeyToLocation;
}
diff --git
a/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataMetrics.java
b/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataMetrics.java
index 25a79cb12d8..e7392a8f1ac 100644
---
a/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataMetrics.java
+++
b/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataMetrics.java
@@ -52,16 +52,19 @@ public class HoodieMetadataMetrics implements Serializable {
public static final String LOOKUP_FILES_STR = "lookup_files";
public static final String LOOKUP_BLOOM_FILTERS_METADATA_STR =
"lookup_meta_index_bloom_filters";
public static final String LOOKUP_COLUMN_STATS_METADATA_STR =
"lookup_meta_index_column_ranges";
+ public static final String LOOKUP_BLOOM_FILTERS_FILE_COUNT_STR =
"lookup_meta_index_bloom_filters_file_count";
+ public static final String LOOKUP_COLUMN_STATS_FILE_COUNT_STR =
"lookup_meta_index_column_ranges_file_count";
+
// Time for lookup from record index
public static final String LOOKUP_RECORD_INDEX_TIME_STR =
"lookup_record_index_time";
// Number of keys looked up in a call
public static final String LOOKUP_RECORD_INDEX_KEYS_COUNT_STR =
"lookup_record_index_key_count";
// Number of keys found in record index
- public static final String LOOKUP_RECORD_INDEX_KEYS_HITS_COUNT_STR =
"lookup_record_index_key_count";
+ public static final String LOOKUP_RECORD_INDEX_KEYS_HITS_COUNT_STR =
"lookup_record_index_key_hit_count";
public static final String SCAN_STR = "scan";
public static final String BASEFILE_READ_STR = "basefile_read";
public static final String INITIALIZE_STR = "initialize";
- public static final String REBOOTSTRAP_STR = "rebootstrap";
+ public static final String REBOOTSTRAP_STR = "rebootstrap_count";
public static final String BOOTSTRAP_ERR_STR = "bootstrap_error";
// Stats names
@@ -143,7 +146,7 @@ public class HoodieMetadataMetrics implements Serializable {
String countKey = action + ".count";
String durationKey = action + ".totalDuration";
incrementMetric(countKey, 1);
- incrementMetric(durationKey, durationInMs);
+ setMetric(durationKey, durationInMs);
}
public void updateSizeMetrics(HoodieTableMetaClient metaClient,
HoodieBackedTableMetadata metadata, Set<String> metadataPartitions) {