yihua commented on code in PR #8176:
URL: https://github.com/apache/hudi/pull/8176#discussion_r1153905604


##########
hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/keygen/factory/HoodieSparkKeyGeneratorFactory.java:
##########
@@ -75,40 +79,60 @@ public static KeyGenerator 
createKeyGenerator(TypedProperties props) throws IOEx
     }
   }
 
+  /**
+   * @param type {@link KeyGeneratorType} enum.
+   * @return The key generator class name for Spark based on the {@link 
KeyGeneratorType}.
+   */
+  public static String getKeyGeneratorClassNameFromType(KeyGeneratorType type) 
{
+    switch (type) {
+      case SIMPLE:
+        return SimpleKeyGenerator.class.getName();
+      case COMPLEX:
+        return ComplexKeyGenerator.class.getName();
+      case TIMESTAMP:
+        return TimestampBasedKeyGenerator.class.getName();
+      case CUSTOM:
+        return CustomKeyGenerator.class.getName();
+      case NON_PARTITION:
+        return NonpartitionedKeyGenerator.class.getName();
+      case GLOBAL_DELETE:
+        return GlobalDeleteKeyGenerator.class.getName();
+      default:
+        throw new HoodieKeyGeneratorException("Unsupported keyGenerator Type " 
+ type);
+    }
+  }
+
+  /**
+   * Infers the key generator type based on the record key and partition 
fields.
+   * If neither of the record key and partition fields are set, the default 
type is returned.
+   *
+   * @param props Properties from the write config.
+   * @return Inferred key generator type.
+   */
+  public static KeyGeneratorType 
inferKeyGeneratorTypeFromWriteConfig(TypedProperties props) {

Review Comment:
   This has to be public, as used by `DataSourceOptionsHelper`.



##########
hudi-spark-datasource/hudi-spark-common/src/main/scala/org/apache/spark/sql/catalyst/catalog/HoodieCatalogTable.scala:
##########
@@ -300,7 +302,7 @@ class HoodieCatalogTable(val spark: SparkSession, var 
table: CatalogTable) exten
       val primaryKeys = 
table.properties.getOrElse(SQL_KEY_TABLE_PRIMARY_KEY.sqlKeyName, 
table.storage.properties.get(SQL_KEY_TABLE_PRIMARY_KEY.sqlKeyName)).toString
       val partitions = table.partitionColumnNames.mkString(",")
       extraConfig(HoodieTableConfig.KEY_GENERATOR_CLASS_NAME.key) =
-        DataSourceOptionsHelper.inferKeyGenClazz(primaryKeys, partitions)
+        getKeyGeneratorClassNameFromType(inferKeyGeneratorType(primaryKeys, 
partitions))

Review Comment:
   Fixed.



-- 
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]

Reply via email to