Skip to content

[SUPPORT] Hudi AvroDeserializer failing with java.lang.NullPointerException #6908

@BalaMahesh

Description

@BalaMahesh

Tips before filing an issue

  • Have you gone through our FAQs? yes

  • Join the mailing list to engage in conversations and get faster support at dev-subscribe@hudi.apache.org.

  • If you have triaged this as a bug, then file an issue directly.

Describe the problem you faced

We are using PostgresDebeziumSource and consuming data from confluent Kafka, using Confluent Schema Registry as at the Schema Provider. Application runs fine for some time and then all of sudden fails with Null Pointer Exception.

To Reproduce

Steps to reproduce the behavior:

  1. Use Debezium Kafka Connect to publish data from Postgres server to Kafka.
  2. Use PostgresDebeziumSource and Confluent Schema Registry to consume data
  3. It runs fine for some records and stores the data into files in storage.
  4. After some time it fails with Null Pointer Exception without much description.

Expected behavior

Application should run seem less without any errors.

Environment Description

  • Hudi version : 0.12.0

  • Spark version : 3.2.1

  • Hive version : 2.3.5

  • Hadoop version : 2.7.7

  • Storage (HDFS/S3/GCS..) : GCS

  • Running on Docker? (yes/no) : Yes(k8's)

Additional context

I tried doing remote debug, https://github.com/apache/hudi/blob/bf86efef719b7760ea379bfa08c537431eeee09a/hudi-[…]client/src/main/scala/org/apache/hudi/AvroConversionUtils.scala this piece of code is giving the error. i tried rdd.count() in evaluator , it returns the element count (non zero) but when I do rdd.first() or next() I am getting the same exception

Stacktrace


22/10/07 15:30:03 INFO dag-scheduler-event-loop DAGScheduler: ResultStage 1 (isEmpty at DeltaSync.java:481) failed in 57.186 s due to Job aborted due to stage failure: Task 0 in stage 1.0 failed 1 times, most recent failure: Lost task 0.0 in stage 1.0 (TID 1) (192.168.0.188 executor driver): java.lang.NullPointerException
	at [org.apache.hudi.org](http://org.apache.hudi.org/).apache.spark.sql.avro.AvroDeserializer.$anonfun$getRecordWriter$2(AvroDeserializer.scala:383)
	at [org.apache.hudi.org](http://org.apache.hudi.org/).apache.spark.sql.avro.AvroDeserializer.$anonfun$getRecordWriter$2$adapted(AvroDeserializer.scala:379)
	at [org.apache.hudi.org](http://org.apache.hudi.org/).apache.spark.sql.avro.AvroDeserializer.$anonfun$converter$4(AvroDeserializer.scala:88)
	at [org.apache.hudi.org](http://org.apache.hudi.org/).apache.spark.sql.avro.AvroDeserializer.deserialize(AvroDeserializer.scala:106)
	at [org.apache.hudi.org](http://org.apache.hudi.org/).apache.spark.sql.avro.HoodieSpark3_2AvroDeserializer.deserialize(HoodieSpark3_2AvroDeserializer.scala:30)
	at org.apache.hudi.AvroConversionUtils$.$anonfun$createAvroToInternalRowConverter$1(AvroConversionUtils.scala:69)
	at org.apache.hudi.AvroConversionUtils$.$anonfun$createConverterToRow$1(AvroConversionUtils.scala:99)
	at org.apache.hudi.AvroConversionUtils$.$anonfun$createDataFrame$2(AvroConversionUtils.scala:136)
	at scala.collection.Iterator$$anon$10.next(Iterator.scala:461)
	at scala.collection.Iterator$$anon$10.next(Iterator.scala:461)
	at scala.collection.Iterator$$anon$10.next(Iterator.scala:461)
	at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:514)
	at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
	at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
	at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
	at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)
	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anon$1.hasNext(WholeStageCodegenExec.scala:759)
	at scala.collection.Iterator.isEmpty(Iterator.scala:387)
	at scala.collection.Iterator.isEmpty$(Iterator.scala:387)
	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anon$1.isEmpty(WholeStageCodegenExec.scala:757)
	at org.apache.hudi.HoodieSparkUtils$.$anonfun$createRdd$2(HoodieSparkUtils.scala:165)
	at org.apache.spark.rdd.RDD.$anonfun$mapPartitions$2(RDD.scala:863)
	at org.apache.spark.rdd.RDD.$anonfun$mapPartitions$2$adapted(RDD.scala:863)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:337)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
	at org.apache.spark.scheduler.Task.run(Task.scala:131)
	at org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:506)
	at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1491)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:509)
	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) .

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions