未找到推特流

twitterStream not found

我正在尝试编译我的第一个 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

你知道我是否遗漏了任何库或依赖项吗?

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

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

现在搜索 twitter 和 bingo...包 org.apache.spark.streaming 中有一个叫做 TwitterUtils 的东西。现在因为它被称为 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]

它 returns 一个 ReceiverInputDStream[ Status ] 其中 Statustwitter4j.Status.

参数进一步说明

ssc
StreamingContext 对象

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

过滤器
一组过滤字符串以仅获取匹配它们的推文

存储级别
用于存储接收到的对象的存储级别

查看... API 文档很简单。我相信,现在您应该更有动力阅读 API 文档。

并且...这意味着您还需要稍微了解一下(至少是入门部分)twitter4j 文档。

NOTE :: This answer is specifically written to explain "Why not to shy away from API docs ?". And was written after careful thoughts. So please, do not edit unless your edit makes some significant contribution.