首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sparkstreaming_Twitter数据

Sparkstreaming_Twitter数据
EN

Stack Overflow用户
提问于 2016-04-30 10:40:02
回答 1查看 459关注 0票数 2

我对星火流非常陌生,我想使用星火流来传输twitter数据,同时也会遇到类似的错误。

twitter4j.TwitterStream.addListener(Ltwitter4j/StatusListener;)V :java.lang.NoSuchMethodError

用过的库

  1. 火花流-twitter_2.10-1.5.1.jar
  2. twitter4j-core-4.0.2.jar
  3. twitter4j-stream-4.0.2.jar

注意:即使我使用twitter4j-*-3.03 libraies也会出现错误,比如

朗不是twitter4j.status的成员

代码语言:javascript
复制
package com.mobicloud.bhavani.sparkstreaming        
import org.apache.spark.SparkConf     
import org.apache.spark.streaming.StreamingContext        
import org.apache.spark.streaming.Seconds        
import twitter4j.conf.ConfigurationBuilder    
import twitter4j.auth.OAuthAuthorization    
import org.apache.spark.streaming.twitter.TwitterUtils

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

    if (args.length < 4) {    
      System.err.println("Usage: TwitterData <ConsumerKey><ConsumerSecret><accessToken><accessTokenSecret>" +    
        "[<filters>]")
      System.exit(1)   
    }


    val appName = "TwitterData"    
    val conf = new SparkConf()    
    conf.setAppName(appName).setMaster("local[*]")    


    val ssc = new StreamingContext(conf, Seconds(1))    
    val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret) = args.take(4)    
    val filters = args.takeRight(args.length - 4)    
    val cb = new ConfigurationBuilder    
    cb.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)    
      .setOAuthConsumerSecret(consumerSecret)    
      .setOAuthAccessToken(accessToken)    
      .setOAuthAccessTokenSecret(accessTokenSecret)    
    val auth = new OAuthAuthorization(cb.build)    
    val tweets = TwitterUtils.createStream(ssc, Some(auth))    
   val englishTweets = tweets.filter(_.getLang() == "en")    
    englishTweets .print()    
    ssc.start()    
    ssc.awaitTermination()    

  }
}
EN

回答 1

Stack Overflow用户

发布于 2016-04-30 19:27:26

twitter4j.TwitterStream.addListener(Ltwitter4j/StatusListener;):java.lang.NoSuchMethodError

是由依赖不匹配b/w稀疏流和twitter4j库造成的。

火花流-twitter_2.10-1.1.jar与twitter4j 3.03库兼容。但是您使用的是twitter4j-core-4.0.2.jar,twitter4j-stream-4.0.2.jar罐子。

检查这里是否有相关的罐子。

如果您使用twitter4j--3.03 libraies,您将在这个特定的行`tweets.filter(.getLang() == "en")`_中得到一个错误,因为twitter4j-3.03状态接口没有getLang() method.This方法,只能在twiiter4j-3.0.6和更高版本中使用。

如何修正:

1)注释过滤器,直接打印tweet。

2)使用依赖于twitter4j版本> 3.06的火花流的后期版本,如依赖于twitter4j 4.0.4版本的2.10-1.6.1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36953836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档