2016-07-01 2 views
3

Следующая импорт не удается скомпилировать в SBTНевозможно импортировать 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] 

И в дальнейшем, а также впоследствии

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]      ^
           ^

сборки. sbt является следующим проходом все разрешения на иждивенцы

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" 

Я добавил неверную зависимость?

Ваша помощь будет высоко оценена.

Спасибо, Маз

ответ

1

Вот 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 
    } 
} 

И assembly.sbt в проекте вложенной

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

2

Вам нужно добавить следующую зависимость:

// 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: другие зависимости Scala версия может вызвать у вас некоторые проблемы. Вы должны указать _2.11 для своих других искровых зависимостей.

+0

спасибо Eliasah. вопрос импорта нет, но 'вал tweetStream = TwitterUtils.createStream (ГКС, None, фильтры, StorageLevel.MEMORY_ONLY_SER_2) .map (gson.toJson (_)) Исключение в потоке "основной" java.lang .NoClassDefFoundError: org/apache/spark/streaming/twitter/TwitterUtils $ ' все еще остается. И идеи, пожалуйста. Еще раз спасибо. – Maz

+0

Это потому, что вам нужно построить uber-jar. с сборкой sbt на пример – eliasah

+0

@Maz вы решили свою проблему? если да, пожалуйста, примите ответ, чтобы закрыть его! Спасибо – eliasah

Смежные вопросы