Sparkstreaming_Twitter数据

时间:2016-04-30 10:40:03

标签: spark-streaming

我是非常新兴的流媒体,我想使用spark流式传输Twitter数据,同时遇到错误,如

  

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

使用过的库

  1. spark-streaming-twitter_2.10-1.5.1.jar
  2. twitter4j核-4.0.2.jar
  3. twitter4j流-4.0.2.jar
  4. 注意::即使我使用twitter4j - * - 3.03图书馆也会收到类似

    的错误
      

    lang不是twitter4j.status的成员

    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()    
    
      }
    }
    

1 个答案:

答案 0 :(得分:0)

  

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

是由依赖性不匹配引起的sp / s sparstreaming和twitter4j库引起的。

Spark-streaming-twitter_2.10-1.5.1.jar依赖于twitter4j 3.03 库。 但你使用的是twitter4j-core-4.0.2.jar,twitter4j-stream-4.0.2.jar罐子。

check here for the dependent jars.

如果您使用twitter4j- -3.03图书馆,您将在此特定行Private Sub Workbook_Open() ActiveWorkbook.RefreshAll End Sub Private Sub Workbook_Open() 'Step 1: Use the RefreshAll method Workbooks(ThisWorkbook.Name).RefreshAll End Sub 中收到错误,因为twitter4j - -3.03状态界面没有getLang()方法。此方法仅在twiiter4j-3.0.6及更高版本中可用。

如何解决:

1)评论过滤器,直接打印推文。

2)使用更高版本的spark流,这取决于twitter4j版本&gt; 3.06,例如spark-streaming-twitter_2.10-1.6.1,这取决于twitter4j 4.0.4版本。