Uploaded image for project: 'Apache Hudi'
  1. Apache Hudi
  2. HUDI-4810

Fix Hudi bundles requiring log4j2 on the classpath

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 0.12.1
    • None
    • 4

    Description

      As part of addressing HUDI-4441, we've erroneously rebased Hudi onto "log4j-1.2-api" module under impression that it's an API module (as advertised) which turned out not to be the case: it's actual bridge implementation, requiring Log4j2 be provided on the classpath as required dependency.

      For version of Spark < 3.3 this triggers exceptions like the following one (reported by akmodi)

       

      Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager    at org.apache.hudi.metrics.datadog.DatadogReporter.<clinit>(DatadogReporter.java:55)    at org.apache.hudi.metrics.datadog.DatadogMetricsReporter.<init>(DatadogMetricsReporter.java:62)    at org.apache.hudi.metrics.MetricsReporterFactory.createReporter(MetricsReporterFactory.java:70)    at org.apache.hudi.metrics.Metrics.<init>(Metrics.java:50)    at org.apache.hudi.metrics.Metrics.init(Metrics.java:96)    at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamerMetrics.<init>(HoodieDeltaStreamerMetrics.java:44)    at org.apache.hudi.utilities.deltastreamer.DeltaSync.<init>(DeltaSync.java:243)    at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer$DeltaSyncService.<init>(HoodieDeltaStreamer.java:663)    at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.<init>(HoodieDeltaStreamer.java:143)    at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.<init>(HoodieDeltaStreamer.java:116)    at org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer.main(HoodieDeltaStreamer.java:562)    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:1000)    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:1089)    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1098)    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)    ... 23 more 

      Attachments

        Activity

          People

            alexey.kudinkin Alexey Kudinkin
            alexey.kudinkin Alexey Kudinkin
            Ethan Guo
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: