Разрешение NoClassDefFoundError: исключение org / apache / spark / Logging - PullRequest
0 голосов
/ 27 апреля 2018

Я пробовал разъем hbase-spark. Для начала я пробую этот код.

Мои зависимости pom:

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-spark</artifactId>
        <version>2.0.0-alpha4</version>
    </dependency>
</dependencies>

Я получаю следующее исключение при выполнении кода:

Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / spark / Logging в java.lang.ClassLoader.defineClass1 (собственный метод) в java.lang.ClassLoader.defineClass (ClassLoader.java:760) в java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) в java.net.URLClassLoader.defineClass (URLClassLoader.java:467) на java.net.URLClassLoader.access $ 100 (URLClassLoader.java:73) на java.net.URLClassLoader $ 1.run (URLClassLoader.java:368) на java.net.URLClassLoader $ 1.run (URLClassLoader.java:362) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:361) в java.lang.ClassLoader.loadClass (ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:331) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) в org.apache.hadoop.hbase.spark.JavaHBaseContext. (JavaHBaseContext.scala: 46) в com.myproj.poc.sparkhbaseneo4j.App.main (App.java:71) Вызывается: java.lang.ClassNotFoundException: org.apache.spark.Logging на java.net.URLClassLoader.findClass (URLClassLoader.java:381) в java.lang.ClassLoader.loadClass (ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:331) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) ... еще 14

com.myproj.poc.sparkhbaseneo4j.App.main(App.java:71) - это строка 67 в коде github.

Я проверил эту тему . Это говорит о том, что я должен включать одинаковые версии всех библиотек. Раньше в моем ПОМе были версии 2.3.0 библиотек spark. Но я понял, что hbase-spark имеет последнюю версию 2.0.0. Поэтому я понизил версии всех свечных библиотек до 2.0.0. Но я все еще получаю то же исключение.

Или я должен придерживаться 1.X.X версий только для использования этого, так как этот ответ говорит, что он был удален после версии 1.5.2?

1 Ответ

0 голосов
/ 27 апреля 2018

Шон Оуэн предложил в http://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Hit-quot-Exception-in-thread-main-java-lang-NoClassDefFoundError/td-p/44486, что «Вы не должны использовать org.apache.spark.Logging в вашем приложении вообще. Вероятно, это проблема и решение».

Таким образом, вы должны использовать следующую или более высокую версию

<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>

Обновлено

Я указал это и теперь получаю NoClassDefFoundError: org / apache / spark / streaming / dstream / DStream

для вышеуказанной проблемы вам нужна следующая зависимость

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
    <scope>provided</scope>
</dependency>
...