web-dev-qa-db-fra.com

Exception Spark Twitter Streaming: (org.Apache.spark.Logging) classnotfound

J'essaie Spark Twitter Streaming exemple avec Scala en utilisant Maven, mais je reçois une erreur ci-dessous lorsque je l'exécute:

Causée par: Java.lang.ClassNotFoundException: org.Apache.spark.Logging

Ci-dessous sont mes dépendances:

<dependencies>
<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-streaming_2.10</artifactId>
    <version>2.0.0</version>
</dependency> 
<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-streaming-Twitter_2.11</artifactId>
    <version>1.6.2</version> 
</dependency> 

Je sais que la Logging a été déplacée vers org.Apache.spark.internal.Logging mais je ne sais pas si c'est la raison, j'ai déjà essayé de changer la version des dépendances à la dernière, mais sans succès.

14
Ahmad Abu-Hamideh

TLDR; 

La classe org.Apache.spark.Logging est disponible dans la version Spark 1.5.2 ou inférieure (bien que je n’aie pas testé toutes les versions inférieures), mais elle n’est pas disponible dans les versions supérieures à la même .


Tout se résume à l'utilisation de incompatible version de Apache Spark :

1. Essayons de import org.Apache.spark.Logging sur Spark 2.0.0 :

user@ubuntu:~$ /opt/spark/bin/spark-Shell
Welcome to
  ____              __
 / __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/___/ .__/\_,_/_/ /_/\_\   version 2.0.0
   /_/      
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101)
scala> import org.Apache.spark.Logging
<console>:23: error: object Logging is not a member of package org.Apache.spark
import org.Apache.spark.Logging
          ^

La classe org.Apache.spark.Logging est introuvable.


2. Essayons de import org.Apache.spark.Logging sur Spark 1.6.2 :

(comme ci-dessus, c'est-à-dire la classe org.Apache.spark.Logging est pas trouvé.)} _


3. Essayons de import org.Apache.spark.Logging sur Spark 1.5.2 :

user@ubuntu:~$ /opt/spark-1.5.2-bin-hadoop2.6/bin/spark-Shell
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.5.2
      /_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101)
scala> import org.Apache.spark.Logging
import org.Apache.spark.Logging

OUI! Il est disponible et importé avec succès

Comme vous pouvez le constater, le org.Apache.spark.Logging requis par/ Spark-Streaming-Twitter , est disponible dans la version Spark 1.5.2 ou une version inférieure, je vous recommande donc d'utiliser 1.5.2 ou une version inférieure de spark. .

Par conséquent, vous devriez remplacer vos dépendances maven par les suivantes: (En supposant que vous utilisez Scala 2.11.x)

<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-streaming-Twitter_2.11</artifactId>
    <version>1.6.2</version>
</dependency>

Notez que artifactId: 2.11 fait référence à la version scala et que version: 1.5.2 ou 1.6.2 fait référence à la version de la bibliothèque (spark-core ou spark-streaming-Twitter).

16
Ajeet

Bonnes nouvelles! Il existe une autre dépendance qui résout ce problème et qui est compatible avec Spark 2.x.

Pour SBT, utilisez cette dépendance:

"org.Apache.bahir" %% "spark-streaming-Twitter" % "2.0.0"
10
Mike Slinn

J'ai rencontré cette exception en utilisant spark-streaming-kafka_2.11-1.6.3.jar et je l'ai résolu en utilisant spark-streaming-kafka-0-8_2.11-2.1.0.jar à la place

5
hill

Sans changer de version, nous pouvons résoudre le problème.

Téléchargez spark-core_2.11-1.5.2.logging.jar à partir de https://raw.githubusercontent.com/swordsmanliu/SparkStreamingHbase/master/lib/spark-core_2.11-1.5.2.logging.jar et collez-le dans le dossier spark\jars. Incluez ce chemin d'accès dans la commande spark-submit. Cela a résolu mon problème.

1
Vikkurthi Manikanta

Comme @ypriverol l'a suggéré, changez la dépendance en org.Apache.bahir. Apache Bahir fournit des extensions de nombreuses plateformes analytiques Apache, y compris Spark.

<dependency>
    <groupId>org.Apache.bahir</groupId>
    <artifactId>spark-streaming-Twitter_2.11</artifactId>
    <version>2.2.0</version>
</dependency>
0
Joseph Kim