1

ドキュメントの例に従っています例: 推定器、変換器、およびパラメータ

そして、エラーメッセージが表示されました

15/09/23 11:46:51 INFO BlockManagerMaster: スレッド「メイン」で BlockManager 例外を登録しました java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/ JavaUniverse$JavaMirror; 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"
    )
}

私は周りを検索しようとし、私の問題に非常に似ているこの投稿を見つけました.sbt設定をsparkバージョン(spark-mllib_2.11から2.10に、spark-1.4.1から1.5.0)に変更しようとしましたが、さらに依存関係の競合が発生しました。

私の直感では、それはバージョンの問題ですが、自分でそれを理解することはできません.誰か助けてもらえますか? どうもありがとう。

4

1 に答える 1

2

@MartinSenneの回答を参照して、記録のために、私にとっては今のところ機能しています。

私がしたことは以下の通りです:

  1. フォルダー「プロジェクト」の下のすべてのコンパイルファイルをクリアします
  2. scala バージョン2.10.4 (以前は 2.11.4 を使用)
  3. spark-sql を次のように変更します: " org.apache.spark" %% "spark-sql" % "1.4.1" % "provided"
  4. MLlib を次のように変更します: "org.apache.spark" %% "spark-mllib" % "1.4.1" % "provided"

@ノート:

  1. 私は既に Spark クラスターを開始しており、「sh spark-submit /path_to_folder/hello/target/scala-2.10/hello_2.10-1.0.jar」を使用して jar を Spark マスターに送信しています。sbt を使用してコマンド「sbt run」で実行すると失敗します。
  2. scala-2.11 から scala-2.10 に変更する場合、jar ファイルのパスと名前も「scala-2.11/hello_2.11-1.0.jar」から「scala-2.10/hello_2.10-1.0.jar」に変更されることに注意してください。 . すべてを再パッケージ化したときに、jar 名のサブミット ジョブ コマンドを変更するのを忘れていたため、"hello_2.10-1.0.jar" にパッケージ化しましたが、"hello_2.10-1.0.jar" をサブミットしたため、余分な問題が発生しました。 ..
  3. 「val sqlContext = new org.apache.spark.sql.SQLContext(sc)」と「val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)」の両方を試しましたが、どちらもcreateDataFrame( )
于 2015-09-23T21:23:29.930 に答える