linliu-code commented on code in PR #13334:
URL: https://github.com/apache/hudi/pull/13334#discussion_r2126792619
##########
hudi-common/src/main/java/org/apache/hudi/common/util/HoodieRecordUtils.java:
##########
@@ -76,20 +81,43 @@ public static HoodieRecordMerger loadRecordMerger(String
mergerClass) {
*/
public static HoodieRecordMerger createRecordMerger(String basePath,
EngineType engineType,
List<String>
mergerClassList, String recordMergerStrategy) {
- if (mergerClassList.isEmpty() ||
HoodieTableMetadata.isMetadataTable(basePath)) {
+ if (HoodieTableMetadata.isMetadataTable(basePath)) {
return HoodieAvroRecordMerger.INSTANCE;
+ } else if (mergerClassList.isEmpty()) {
+ // No merger class is given, we fall back to use Avro based mergers.
+ return createValidRecordMerger(engineType, "",
recordMergerStrategy).get();
} else {
return createValidRecordMerger(engineType, mergerClassList,
recordMergerStrategy)
.orElse(HoodieAvroRecordMerger.INSTANCE);
}
}
public static Option<HoodieRecordMerger> createValidRecordMerger(EngineType
engineType,
- String
mergerImpls, String recordMergerStrategy) {
- if
(recordMergerStrategy.equals(HoodieRecordMerger.PAYLOAD_BASED_MERGE_STRATEGY_UUID))
{
- return Option.of(HoodieAvroRecordMerger.INSTANCE);
+ String
mergerImpls,
+ String
recordMergerStrategy) {
+ switch (recordMergerStrategy) {
+ case HoodieRecordMerger.FIRST_VALUE_MERGE_STRATEGY_UUID:
+ return Option.of(FirstValueAvroRecordMerger.INSTANCE);
+ case HoodieRecordMerger.PARTIAL_UPDATE_MERGE_STRATEGY_UUID:
+ return Option.of(PartialUpdateAvroMerger.INSTANCE);
+ case
HoodieRecordMerger.PARTIAL_UPDATE_WITH_NON_DEFAULT_VALUE_MERGE_STRATEGY_UUID:
+ return Option.of(PartialUpdateWithNonDefaultValueAvroMerger.INSTANCE);
+ case HoodieRecordMerger.PAYLOAD_BASED_MERGE_STRATEGY_UUID:
+ return Option.of(HoodieAvroRecordMerger.INSTANCE);
+ default:
+ // Without merger classes provided; We use default Avro merger.
+ if (mergerImpls.isEmpty()) {
Review Comment:
The existing logic is: Even merger classes are provided, it does not match
with the strategy id, they will be ignored, and fall back to the default one.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]