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.
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 .
Apache Spark
: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 ^
org.Apache.spark.Logging
est introuvable.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é.)} _
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
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).
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"
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
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.
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>