linliu-code commented on code in PR #13334:
URL: https://github.com/apache/hudi/pull/13334#discussion_r2128945213
##########
hudi-common/src/main/java/org/apache/hudi/common/util/HoodieRecordUtils.java:
##########
@@ -75,21 +85,58 @@ public static HoodieRecordMerger loadRecordMerger(String
mergerClass) {
* Instantiate a given class with a record merge.
*/
public static HoodieRecordMerger createRecordMerger(String basePath,
EngineType engineType,
- List<String>
mergerClassList, String recordMergerStrategy) {
- if (mergerClassList.isEmpty() ||
HoodieTableMetadata.isMetadataTable(basePath)) {
+ List<String>
mergerClassList,
+ String
recordMergerStrategy,
+ Option<String>
payloadClassOpt) {
+ 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,
payloadClassOpt)
+ .orElse(HoodieAvroRecordMerger.INSTANCE);
} 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,
+
Option<String> payloadClassOpt) {
+ String payloadClass = payloadClassOpt.get();
+ // Payload based strategy and payload class is given.
+ if (null != recordMergerStrategy
Review Comment:
To deprecate payload, we don't care about the merge mode. That is, if a
given payload class is given, we replace it with corresponding merger class.
`HoodieTableConfig.inferRecordMergeModeFromPayloadClass` returns one of the
three merge modes, which seems not related to our problem since no matter what
merge mode is produced, the merger class is only determined by the payload
class. Please advice on why we need to worry about merge mode.
--
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]