我是非常新兴的流媒体,我想使用spark流式传输Twitter数据,同时遇到错误,如
java.lang.NoSuchMethodError:twitter4j.TwitterStream.addListener(Ltwitter4j / StatusListener;)V
使用过的库
注意::即使我使用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()
}
}
答案 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版本。