web-dev-qa-db-ja.com

scala.reflect.internal.MissingRequirementError:コンパイラミラーのオブジェクトJava.lang.Objectが見つかりません

spark sbtパッケージを使用したスト​​リーミングアプリケーションを構築しようとしています。このエラーの原因がわかりません。

これはエラーの一部です

scala.reflect.internal.MissingRequirementError:コンパイラミラーのオブジェクトJava.lang.Objectが見つかりません。 scala.reflect.internal.MissingRequirementError $ .signal(MissingRequirementError.scala:16)at scala.reflect.internal.MissingRequirementError $ .notFound(MissingRequirementError.scala:17)at scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors .scala:48)at scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:40)at scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:40)

そしてこれがコードです

import org.Apache.spark.SparkContext
import org.Apache.spark._
import org.Apache.spark.streaming._
import org.Apache.spark.streaming.Twitter._
import Twitter4j.Status
object TrendingHashTags {
def main(args: Array[String]): Unit = {
val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret,
lang, batchInterval, minThreshold, showCount ) = args.take(8)
val filters = args.takeRight(args.length - 8)
System.setProperty("Twitter4j.oauth.consumerKey", consumerKey)
System.setProperty("Twitter4j.oauth.consumerSecret", consumerSecret)
System.setProperty("Twitter4j.oauth.accessToken", accessToken)
System.setProperty("Twitter4j.oauth.accessTokenSecret", accessTokenSecret)
val conf = new SparkConf().setAppName("TrendingHashTags")
val ssc = new StreamingContext(conf, Seconds(batchInterval.toInt))
val tweets = TwitterUtils.createStream(ssc, None, filters)
val tweetsFilteredByLang = tweets.filter{Tweet => Tweet.getLang() == lang}
val statuses = tweetsFilteredByLang.map{ Tweet => Tweet.getText()}
val words = statuses.flatMap{status => status.split("""\s+""")}
val hashTags = words.filter{Word => Word.startsWith("#")}
val hashTagPairs = hashTags.map{hashtag => (hashtag, 1)}
val tagsWithCounts = hashTagPairs.updateStateByKey(
(counts: Seq[Int], prevCount: Option[Int]) =>
prevCount.map{c => c + counts.sum}.orElse{Some(counts.sum)}
)
val topHashTags = tagsWithCounts.filter{ case(t, c) =>
c > minThreshold.toInt
}
val sortedTopHashTags = topHashTags.transform{ rdd =>
rdd.sortBy({case(w, c) => c}, false)
}
sortedTopHashTags.print(showCount.toInt)
ssc.start()
ssc.awaitTermination()
}
}
13
Elsayed

この問題を解決しました。Javaバージョンと互換性のないscala 9を使用していることがわかりました。Java 9からJava 8に移行しました。

24
Elsayed