【问题标题】:adding language filter to twitter popularhashtags - scala向 twitter 流行标签添加语言过滤器 - scala
【发布时间】:2015-09-09 22:28:10
【问题描述】:

我是 Spark 和 Scala 的新手。我运行了 Spark 流作业 - twitter 流行的哈希标签。

我为某些词添加了过滤器,并且能够过滤掉推文:

val filter = Array("spark", "Big Data")
val stream = TwitterUtils.createStream(ssc, None, filter) 

同样,我想添加一个语言过滤器,以便仅流式传输英语推文。 Twitter4j 有Track()Locations。它有语言过滤器吗?如果是这样,它在 Scala 中是如何工作的?

【问题讨论】:

    标签: scala twitter apache-spark twitter4j spark-streaming


    【解决方案1】:

    我在重复this Spark thread 中已经说过的话。

    Spark 使用 Twitter4J 作为提要。 Twitter4J 从 3.0.6 版开始具有 getLang (doc),它允许您:

    .filter(_.getLang == "en")
    

    它可以用来对付twitter4j.StatusDStream

    但不幸的是,Spark 使用的是 Twitter4J (doc) 的旧版 version,它没有 getLang

    要么将 Spark 中的 Twitter4J 升级到 3.0.6,要么等待 Spark 升级 Twitter4J,要么采用完全不同的方法。

    【讨论】:

    • 感谢您的回答。但是,我收到运行时错误 - java.lang.NoSuchMethodError: twitter4j.Status.getLang()Ljava/lang/String 。我正在使用 sbt 构建应用程序。代码就像 val stream = TwitterUtils.createStream(ssc, None) val lanFilter = stream.filter(status => status.getLang == "en") val hashTags = lanFilter.flatMap(status => status.getText.split( " ").filter(_.startsWith("#"))) 并在 sbt 构建文件中将依赖项更改为 libraryDependencies += "org.twitter4j" % "twitter4j-stream" % "3.0.6" 。你能告诉我哪里出错了吗?
    • Spark 似乎没有使用 3.0.6。
    • 谢谢你。那么出路是什么。我正在使用 spark 1.3,我的 sbt 依赖项是 libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.0" % "provided" libraryDependencies += "org.apache.spark" %% " spark-streaming" % "1.3.0" % "provided" libraryDependencies += "org.apache.spark" %% "spark-streaming-twitter" % "1.3.0" libraryDependencies += "org.twitter4j" % "twitter4j -流”%“3.0.6”。在这方面有什么意见吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多