This is an automated email from the ASF dual-hosted git repository.
vhs pushed a commit to branch release-1.0.2
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/release-1.0.2 by this push:
new abe502dba19 [HUDI-9321] Fix unnecessary hoodie config conversion for
ConfigUtils.getPayloadClass (#13167)
abe502dba19 is described below
commit abe502dba194959b7be4e294183e2fa45386d88a
Author: Danny Chan <[email protected]>
AuthorDate: Fri Apr 18 16:10:53 2025 +0800
[HUDI-9321] Fix unnecessary hoodie config conversion for
ConfigUtils.getPayloadClass (#13167)
The construction of HoodieConfig is very costly, this would impact the
regular read and also compaction.
(cherry picked from commit d6c1272ee954496e4f3c91f2a428e430851beee8)
---
.../org/apache/hudi/common/model/HoodieRecordPayload.java | 12 ++++++++----
.../main/java/org/apache/hudi/common/util/ConfigUtils.java | 4 ++--
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
index 543562da375..6821cd7c198 100644
---
a/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
+++
b/hudi-common/src/main/java/org/apache/hudi/common/model/HoodieRecordPayload.java
@@ -160,11 +160,15 @@ public interface HoodieRecordPayload<T extends
HoodieRecordPayload> extends Seri
}
static String getPayloadClassName(HoodieConfig config) {
+ return getPayloadClassName(config.getProps());
+ }
+
+ static String getPayloadClassName(Properties props) {
String payloadClassName;
- if (config.contains(PAYLOAD_CLASS_NAME)) {
- payloadClassName = config.getString(PAYLOAD_CLASS_NAME);
- } else if (config.contains("hoodie.datasource.write.payload.class")) {
- payloadClassName =
config.getString("hoodie.datasource.write.payload.class");
+ if (props.containsKey(PAYLOAD_CLASS_NAME.key())) {
+ payloadClassName = props.getProperty(PAYLOAD_CLASS_NAME.key());
+ } else if (props.containsKey("hoodie.datasource.write.payload.class")) {
+ payloadClassName =
props.getProperty("hoodie.datasource.write.payload.class");
} else {
return HoodieTableConfig.DEFAULT_PAYLOAD_CLASS_NAME;
}
diff --git
a/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
b/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
index 6d68abcea1c..49405f97489 100644
--- a/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
+++ b/hudi-common/src/main/java/org/apache/hudi/common/util/ConfigUtils.java
@@ -92,8 +92,8 @@ public class ConfigUtils {
/**
* Get payload class.
*/
- public static String getPayloadClass(Properties properties) {
- return HoodieRecordPayload.getPayloadClassName(new
HoodieConfig(properties));
+ public static String getPayloadClass(Properties props) {
+ return HoodieRecordPayload.getPayloadClassName(props);
}
public static List<String> split2List(String param) {