Ethan Guo created HUDI-3640:
-------------------------------

             Summary: Use default key generator class if not provided by user 
in TwoToThreeUpgradeHandler
                 Key: HUDI-3640
                 URL: https://issues.apache.org/jira/browse/HUDI-3640
             Project: Apache Hudi
          Issue Type: Task
            Reporter: Ethan Guo
            Assignee: Ethan Guo
             Fix For: 0.11.0


When upgrading from table version 2 to 3, the logic checks if the key generator 
class is provided by user config.  We should still use default 
SimpleKeyGenerator if not provided, instead of throwing an error in the upgrade 
step.
{code:java}
ValidationUtils.checkState(keyGenClassName != null, String.format("Missing 
config: %s or %s",
        HoodieTableConfig.KEY_GENERATOR_CLASS_NAME, 
HoodieWriteConfig.KEYGENERATOR_CLASS_NAME)); {code}
 

 
{code:java}
22/03/14 12:28:10 ERROR HoodieDeltaStreamer: Shutting down delta-sync due to 
exception
java.lang.IllegalStateException: Missing config: Key: 
'hoodie.table.keygenerator.class' , default: null description: Key Generator 
class property for the hoodie table since version: version is not defined 
deprecated after: version is not defined) or Key: 
'hoodie.datasource.write.keygenerator.class' , default: null description: Key 
generator class, that implements `org.apache.hudi.keygen.KeyGenerator` extract 
a key out of incoming records. since version: version is not defined deprecated 
after: version is not defined)
    at 
org.apache.hudi.common.util.ValidationUtils.checkState(ValidationUtils.java:67)
    at 
org.apache.hudi.table.upgrade.TwoToThreeUpgradeHandler.upgrade(TwoToThreeUpgradeHandler.java:50)
    at 
org.apache.hudi.table.upgrade.UpgradeDowngrade.upgrade(UpgradeDowngrade.java:145)
    at 
org.apache.hudi.table.upgrade.UpgradeDowngrade.run(UpgradeDowngrade.java:118)
    at 
org.apache.hudi.client.BaseHoodieWriteClient.tryUpgrade(BaseHoodieWriteClient.java:1407)
    at 
org.apache.hudi.client.BaseHoodieWriteClient.initTable(BaseHoodieWriteClient.java:1302)
    at 
org.apache.hudi.client.SparkRDDWriteClient.upsert(SparkRDDWriteClient.java:151)
    at 
org.apache.hudi.utilities.deltastreamer.DeltaSync.writeToSink(DeltaSync.java:577)
    at 
org.apache.hudi.utilities.deltastreamer.DeltaSync.syncOnce(DeltaSync.java:329)
    at 
org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer$DeltaSyncService.lambda$startService$0(HoodieDeltaStreamer.java:656)
    at 
java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
22/03/14 12:28:10 INFO HoodieDeltaStreamer: Delta Sync shutdown. Error ?true
22/03/14 12:28:10 WARN HoodieDeltaStreamer: Gracefully shutting down compactor
22/03/14 12:28:16 INFO AsyncCompactService: Compactor shutting down properly!!
22/03/14 12:28:16 INFO HoodieDeltaStreamer: DeltaSync shutdown. Closing write 
client. Error?true
22/03/14 12:28:16 ERROR HoodieAsyncService: Service shutdown with error
java.util.concurrent.ExecutionException: 
org.apache.hudi.exception.HoodieException: Missing config: Key: 
'hoodie.table.keygenerator.class' , default: null description: Key Generator 
class property for the hoodie table since version: version is not defined 
deprecated after: version is not defined) or Key: 
'hoodie.datasource.write.keygenerator.class' , default: null description: Key 
generator class, that implements `org.apache.hudi.keygen.KeyGenerator` extract 
a key out of incoming records. since version: version is not defined deprecated 
after: version is not defined)
    at 
java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
    at 
org.apache.hudi.async.HoodieAsyncService.waitForShutdown(HoodieAsyncService.java:103)
    at 
org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.lambda$sync$1(HoodieDeltaStreamer.java:182)
    at org.apache.hudi.common.util.Option.ifPresent(Option.java:96)
    at 
org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.sync(HoodieDeltaStreamer.java:179)
    at 
org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.main(HoodieDeltaStreamer.java:530)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at 
org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
    at 
org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
    at 
org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) {code}
 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to