2016-07-01 10 views
3

Die folgenden Import versagt in SBT anschließendkann nicht in Spark importieren org.apache.spark.streaming.twitter Scala

import org.apache.spark.streaming.twitter._ 

[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:8: object twitter is not a member of package org.apache.spark.streaming 
[error] import org.apache.spark.streaming.twitter._ 
[error] 

und die folgenden kompilieren und

val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_)) 


[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:36: not found: value TwitterUtils 
[error]  val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_)) 
[error]      ^
           ^

Der Build. sbt ist die folgende Übergänge alle Abhängigkeit Auflösung

name := "TweetStream" 
version := "1.0" 
scalaVersion := "2.11.7" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.2" 
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.5.2" 
libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "1.5.2" 
libraryDependencies += "com.google.code.gson" % "gson" % "2.7" 
libraryDependencies += "org.twitter4j" % "twitter4j-core" % "4.0.4" 

Habe ich die falsche Abhängigkeit hinzugefügt?

Ihre Hilfe würde sehr geschätzt werden.

Danke, Maz

Antwort

1

Hier ist der build.sbt ...

lazy val root = (project in file(".")). 
    settings(
    name := "TweetStream", 
    version := "1.0", 
    scalaVersion := "2.11.7", 
    mainClass in Compile := Some("TweetStream")   
) 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.5.2", 
    "org.apache.spark" %% "spark-streaming" % "1.5.2", 
    "org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2", 
    "com.google.code.gson" % "gson" % "2.7", 
    "org.twitter4j" % "twitter4j-core" % "3.0.3", 
    "org.twitter4j" % "twitter4j-stream" % "3.0.3" 
) 

// META-INF discarding 
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => 
    { 
    case PathList("META-INF", xs @ _*) => MergeStrategy.discard 
    case x => MergeStrategy.first 
    } 
} 

Und die assembly.sbt im Projekt-Unterordner

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")

2

Sie folgende Abhängigkeit hinzufügen müssen:

// https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-twitter_2.11 
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2" 

PS: Die andere Abhängigkeiten Scala Version können Sie einige Probleme verursachen. Sie sollten _2.11 für Ihre anderen Funkenabhängigkeiten angeben.

+0

Vielen Dank Eliasah. Der Import Problem ist verschwunden, aber 'val tweetStream = TwitterUtils.createStream (ssc, None, Filter, StorageLevel.MEMORY_ONLY_SER_2) .map (gson.toJson (_)) Exception in thread "main" java.lang .NoClassDefFoundError: org/apache/spark/streaming/twitter/TwitterUtils $ ' bleibt noch. Und Ideen, bitte. Danke nochmal. – Maz

+0

Das ist, weil Sie ein Überglas bauen müssen. mit sbt Versammlung pro Beispiel – eliasah

+0

@Maz haben Sie Ihr Problem gelöst? Wenn ja, bitte akzeptieren Sie die Antwort, um es zu schließen! Danke – eliasah