twitterStream未找到

时间:2015-03-10 04:33:28

标签: scala twitter apache-spark spark-streaming

我正在尝试编译我的第一个scala程序,并且我使用twitterStream来获取推文,这里是我的代码片段:

import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.spark.streaming._
import org.apache.spark.streaming.twitter._
import org.apache.spark.streaming.StreamingContext._
import TutorialHelper._

object Tutorial {
  def main(args: Array[String]) {

    // Location of the Spark directory 
    val sparkHome = "/home/shaza90/spark-1.1.0"

    // URL of the Spark cluster
    val sparkUrl = TutorialHelper.getSparkUrl()

    // Location of the required JAR files 
    val jarFile = "target/scala-2.10/tutorial_2.10-0.1-SNAPSHOT.jar"

    // HDFS directory for checkpointing
    val checkpointDir = TutorialHelper.getHdfsUrl() + "/checkpoint/" 
    // Configure Twitter credentials using twitter.txt
    TutorialHelper.configureTwitterCredentials()
 val ssc = new StreamingContext(sparkUrl, "Tutorial", Seconds(1), sparkHome, Seq(jarFile))

        val tweets = ssc.twitterStream()
val statuses = tweets.map(status => status.getText())
    statuses.print()
    ssc.checkpoint(checkpointDir)
    ssc.start()
      }
    }

编译时我收到此错误消息:

value twitterStream is not a member of org.apache.spark.streaming.StreamingContext

你知道我是否遗漏了任何图书馆或依赖关系吗?

1 个答案:

答案 0 :(得分:4)

在这种情况下,您需要一组推文。我们都知道Sparks提供Streams。现在,让我们检查一下Spark本身是否提供了与twitter交互的东西。

Open Spark API-docs - > http://spark.apache.org/docs/1.2.0/api/scala/index.html#package

现在搜索twitter和bingo ...包TwitterUtils中有一个名为org.apache.spark.streaming的内容。现在因为它被称为TwitterUtils并且在包org.apache.spark.streaming中,我认为它将提供帮助以从twitter API创建流。

现在让我们点击TwitterUtils并转到 - > http://spark.apache.org/docs/1.2.0/api/scala/index.html#org.apache.spark.streaming.dstream.ReceiverInputDStream

并且是的......它有一个带有以下签名的方法

def createStream(
                 ssc: StreamingContext,
                 twitterAuth: Option[Authorization],
                 filters: Seq[String] = Nil,
                 storageLevel: StorageLevel = StorageLevel.MEMORY_AND_DISK_SER_2
                ): ReceiverInputDStream[Status]

返回ReceiverInputDStream[ Status ] Statustwitter4j.Status

进一步解释参数

<强> SSC
StreamingContext对象

<强> twitterAuth
Twitter4J身份验证,或None使用Twitter4J的默认OAuth授权;这使用system properties twitter4j.oauth.consumerKeytwitter4j.oauth.consumerSecrettwitter4j.oauth.accessTokentwitter4j.oauth.accessTokenSecret

过滤器
一组过滤字符串,只能获得匹配它们的那些推文

<强> storageLevel
用于存储接收对象的存储级别

请参阅... API文档很简单。我相信,现在你应该更有动力阅读API文档了。

并且......这意味着你需要在twitter4j文档中看一点(至少开始部分)。

  

注意::这个答案专门用来解释&#34;为什么不害羞   远离API文档?&#34;。经过深思熟虑后写的。所以   请不要编辑,除非你的编辑有所重要   贡献。