Я следую примеру документации Example: Estimator, Transformer, and ParamСпарк пример MLlib, NoSuchMethodError: org.apache.spark.sql.SQLContext.createDataFrame()
И я получил ошибки Сообщ
15/09/23 11:46:51 INFO BlockManagerMaster: Registered BlockManager Exception in thread "main" java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror; at SimpleApp$.main(hw.scala:75)
И линия 75 является код "sqlContext.createDataFrame()":
import java.util.Random
import org.apache.log4j.Logger
import org.apache.log4j.Level
import scala.io.Source
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.rdd._
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.param.ParamMap
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.recommendation.{ALS, Rating, MatrixFactorizationModel}
import org.apache.spark.sql.Row
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions._
object SimpleApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Simple Application").setMaster("local[4]");
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val training = sqlContext.createDataFrame(Seq(
(1.0, Vectors.dense(0.0, 1.1, 0.1)),
(0.0, Vectors.dense(2.0, 1.0, -1.0)),
(0.0, Vectors.dense(2.0, 1.3, 1.0)),
(1.0, Vectors.dense(0.0, 1.2, -0.5))
)).toDF("label", "features")
}
}
И мой SBT, как показано ниже:
lazy val root = (project in file(".")).
settings(
name := "hello",
version := "1.0",
scalaVersion := "2.11.4"
)
libraryDependencies ++= {
Seq(
"org.apache.spark" %% "spark-core" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-sql" % "1.4.1" % "provided",
"org.apache.spark" % "spark-hive_2.11" % "1.4.1",
"org.apache.spark" % "spark-mllib_2.11" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-streaming" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.4.1" % "provided"
)
}
Я попытался найти и найти this post, который очень похож на мою проблему, и я попытался изменить настройку sbt для искровых версий (spark-mllib_2.11 до 2.10 и spark-1.4.1 до 1.5.0), но это привело к еще большему конфликту зависимости.
Моя интуиция - это проблема с некоторыми версиями, но я не могу понять это, может ли кто-нибудь помочь? большое спасибо.
Вы должны добавить' spark-sql' в зависимости. – zero323
@ zero323 спасибо, я добавлю его и попробую – keypoint
@ zero323 это не сработало, все равно такая же ошибка.Я думаю, возможно, это потому, что здесь «val sqlContext = new SQLContext (sc) val training = sqlContext.createDataFrame()», где я новичок в неправильном классе без такого метода? – keypoint