seethb opened a new issue, #10181:
URL: https://github.com/apache/hudi/issues/10181

   Hi I am doing CRUD operation in YugabyteDB and my changes are tracked like 
below thru my Debezium Kafka connector config. 
   
   INSERT operation:
   
   "before_id_value":null
   "after_id_value":1000
     "op": "c"
   
   UPDATE operation:
   
   "before_id_value":null
   "after_id_value":1000
     "op": "u"
     
   DELETE operation
     "before_id_value":1000
   "after_id_value":null
     "op": "d"
   
   The HoodieSink connector perfectly handles Insert and update operations with 
after_id_value. it fails when i do DELETE operation as It will carry NULL value 
in the after_id_value. In Delete operation we will get before_id only. How do 
we dynamically assign this or is there any other way that we have to handle 
NULL values in Hoodie Kafka sink.
   
                   "hoodie.datasource.write.recordkey.field": "after_id_value",
                   "hoodie.datasource.write.partitionpath.field": 
"after_product_id_value",
   
   
   My Kafka connector config below.
   
   curl -i -X POST -H "Accept:application/json" -H 
"Content-Type:application/json" localhost:8085/connectors/ -d '{
       "name": "hudi-mors-reviews",
       "config": {
                   "bootstrap.servers": "localhost:9092",
                   "connector.class": 
"org.apache.hudi.connect.HoodieSinkConnector",
                   "tasks.max": "1",
                   "topics": "review1.public.reviews",
                   "hoodie.table.name": "public-mors-review-table",
                   "key.converter": 
"org.apache.kafka.connect.storage.StringConverter",
                   "value.converter": 
"org.apache.kafka.connect.storage.StringConverter",
                   "value.converter.schemas.enable": "false",
                   "hoodie.table.type": "MERGE_ON_READ",
                   "hoodie.base.path": 
"file:///tmp/hoodie/public-mors-review-table",
                   "hoodie.datasource.write.recordkey.field": "after_id_value",
                   "hoodie.datasource.write.partitionpath.field": 
"after_product_id_value",
                   "hoodie.schemaprovider.class": 
"org.apache.hudi.schema.SchemaRegistryProvider",
                   "hoodie.deltastreamer.schemaprovider.registry.url": 
"http://localhost:8081/subjects/review1.public.reviews-value/versions/latest";,
                   "hoodie.kafka.commit.interval.secs": 60
         }
   }'
   
   getting below error 
   
   [2023-11-27 08:31:47,194] WARN [hudi-mors-baltest|task-0] Error received 
while writing records for transaction 20231127083047010 in partition 0 
(org.apache.hudi.connect.transaction.ConnectTransactionParticipant:238)
   org.apache.hudi.exception.HoodieKeyException: recordKey value: "null" for 
field: "after_sno_value" cannot be null or empty.
        at org.apache.hudi.keygen.KeyGenUtils.getRecordKey(KeyGenUtils.java:146)
        at 
org.apache.hudi.keygen.SimpleAvroKeyGenerator.getRecordKey(SimpleAvroKeyGenerator.java:50)
        at 
org.apache.hudi.keygen.BaseKeyGenerator.getKey(BaseKeyGenerator.java:69)
        at 
org.apache.hudi.connect.writers.AbstractConnectWriter.writeRecord(AbstractConnectWriter.java:85)
        at 
org.apache.hudi.connect.transaction.ConnectTransactionParticipant.writeRecords(ConnectTransactionParticipant.java:219)
        at 
org.apache.hudi.connect.transaction.ConnectTransactionParticipant.processRecords(ConnectTransactionParticipant.java:137)
        at org.apache.hudi.connect.HoodieSinkTask.put(HoodieSinkTask.java:114)
        at 
org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:581)
        at 
org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:333)
        at 
org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:234)
        at 
org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:203)
        at 
org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:188)
        at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:243)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        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:750)
   [2023-11-27 08:31:47,194] WARN [hudi-mors-baltest|task-0] Error received 
while writing records for transaction 20231127083047010 in partition 0 
(org.apache.hudi.connect.transaction.ConnectTransactionParticipant:238)
   
   **Environment Description**
   
   * Hudi version : 0.13.1
   
   * Spark version : 3.2
   
   * Hive version : N/A
   
   * Hadoop version : N/A
   
   * Storage (HDFS/S3/GCS..) : Local Storage /tmp
   
   * Running on Docker? (yes/no) : No
   
   
   


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