run-main-0) scala.ScalaReflectionException: класс java.sql.Date в JavaMirror с ClasspathFilter ( - PullRequest
0 голосов
/ 24 ноября 2018

Привет, у меня есть файл, переданный моим учителем.Это про Скалу и Спарк.Когда я запускаю код, он дает мне следующее исключение:

  (run-main-0) scala.ScalaReflectionException: class java.sql.Date in 
  JavaMirror with ClasspathFilter 

Сам файл выглядит так:

import org.apache.spark.ml.feature.Tokenizer
import org.apache.spark.sql.Dataset
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
object Main {
   type Embedding       = (String, List[Double])
   type ParsedReview    = (Integer, String, Double)
   org.apache.log4j.Logger getLogger "org"  setLevel 
   (org.apache.log4j.Level.WARN)
   org.apache.log4j.Logger getLogger "akka" setLevel 
  (org.apache.log4j.Level.WARN)
   val spark =  SparkSession.builder
     .appName ("Sentiment")
     .master  ("local[9]")
     .getOrCreate

import spark.implicits._

val reviewSchema = StructType(Array(
        StructField ("reviewText", StringType, nullable=false),
        StructField ("overall",    DoubleType, nullable=false),
        StructField ("summary",    StringType, nullable=false)))

// Read file and merge the text abd summary into a single text column

def loadReviews (path: String): Dataset[ParsedReview] =
    spark
        .read
        .schema (reviewSchema)
        .json (path)
        .rdd
        .zipWithUniqueId
        .map[(Integer,String,Double)] { case (row,id) => (id.toInt, s"${row getString 2} ${row getString 0}", row getDouble 1) }
        .toDS
        .withColumnRenamed ("_1", "id" )
        .withColumnRenamed ("_2", "text")
        .withColumnRenamed ("_3", "overall")
        .as[ParsedReview]

 // Load the GLoVe embeddings file

 def loadGlove (path: String): Dataset[Embedding] =
     spark
         .read
         .text (path)
    .map  { _ getString 0 split " " }
    .map  (r => (r.head, r.tail.toList.map (_.toDouble))) // yuck!
         .withColumnRenamed ("_1", "word" )
         .withColumnRenamed ("_2", "vec")
         .as[Embedding]

def main(args: Array[String]) = {

  val glove  = loadGlove ("Data/glove.6B.50d.txt") // take glove 

  val reviews = loadReviews ("Data/Electronics_5.json") // FIXME

  // replace the following with the project code



   glove.show
   reviews.show

        spark.stop
   }

 }

Мне нужно сохранить строку import org.apache.spark.sql.Dataset, потому что от него зависит какой-то код, но именно из-за этого у меня возникла исключительная ситуация.

Мой файл build.sbt выглядит следующим образом:

  name := "Sentiment Analysis Project"

  version := "1.1"

  scalaVersion := "2.11.12"

  scalacOptions ++= Seq("-unchecked", "-deprecation")

  initialCommands in console := 
  """
  import Main._
  """

   libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0"

   libraryDependencies += "org.apache.spark" %% "spark-mllib" % 
   "2.3.0"

    libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.5"

    libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % 
    "test"

1 Ответ

0 голосов
/ 11 марта 2019

Я использовал OpenJDK 11.0.1.Я удалил его, и оно заработало.

Вы можете проверить текущую версию Java, запустив

java -version

Если у вас установлен brew, вы можете удалить OpenJDK, запустив:

brew cask uninstall java

И чтобы убедиться, что у вас установлена ​​Java 1.8.0, выполните следующее:

brew cask install java8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...