我对星火流非常陌生,我想使用星火流来传输twitter数据,同时也会遇到类似的错误。
twitter4j.TwitterStream.addListener(Ltwitter4j/StatusListener;)V :java.lang.NoSuchMethodError
用过的库
注意:即使我使用twitter4j-*-3.03 libraies也会出现错误,比如
朗不是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()
}
}发布于 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。
https://stackoverflow.com/questions/36953836
复制相似问题