Scalaチュートリアル https://spark.Apache.org/docs/2.1.0/quick-start.html
私のscalaファイル
/* SimpleApp.scala */
import org.Apache.spark.SparkContext
import org.Apache.spark.SparkContext._
import org.Apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "/data/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
sc.stop()
}
}
およびbuild.sbt
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.4"
libraryDependencies += "org.Apache.spark" % "spark-core_2.10" % "2.2.0"
私は走ったsbt package
正常に(scalaソースコードとbuild.sbtを除くすべてをすでに削除してから、sbt package
再び)
[info] Loading project definition from /home/cpu11453local/workspace/testspark_scala/project
[info] Loading settings from build.sbt ...
[info] Set current project to Simple Project (in build file:/home/my_name/workspace/testspark_scala/)
[info] Packaging /home/my_name/workspace/testspark_scala/target/scala-2.12/simple-project_2.12-1.0.jar ...
[info] Done packaging.
[success] Total time: 1 s, completed Nov 8, 2017 12:15:24 PM
ただし、実行するとspark submit
$SPARK_HOME/bin/spark-submit --class "SimpleApp" --master local[4] simple-project_2.12-1.0.jar
エラーが発生しました
Java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
要点 の完全なスパーク送信出力
@Alexeyが言ったように、Scalaバージョンを2.11に変更すると、問題が修正されました。
build.sbt
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.11"
libraryDependencies += "org.Apache.spark" % "spark-core_2.11" % "2.2.0"
ScalaバージョンはSparkと一致する必要があることに注意してください。artifactIdを見てください。spark-core_2.11は、scala 2.11と互換性があることを意味します(後方互換性または前方互換性はありません) )
https://spark.Apache.org/docs/2.4.3/quick-start.html で提供されている手順に従って、同様の問題が発生します
私のセットアップの詳細:Sparkバージョン:2.4.3 Scalaバージョン:2.12.8
ただし、sbtファイルを以下の構成に変更すると、すべてが正常に機能しました(コンパイルとアプリケーションjarの実行の両方)
name:= "シンプルなプロジェクト"
バージョン:= "1.0"
scalaVersion:= "2.11.11"
libraryDependencies + = "org.Apache.spark" %% "spark-sql"% "2.4.3"
spark 2.4.3は2.11.11と互換性がありますScalaバージョンのみ。サンプルプロジェクトのコンパイル中に、sbtはScala 2.11ライブラリから " https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.11 "
ScalaバージョンSpark 2.4.3。本日(2019年11月25日)現在)のドキュメントホームページに関しては、間違いなく混乱があります。 spark 2.4.3状態:
SparkはJava 8 +、Python 2.7 +/3.4+およびR3.1 +で実行されます。Scala APIの場合、 Spark 2.4.3使用Scala 2.12。互換性のあるScalaを使用する必要がありますバージョン(2.12.x)。
Java 7、Python 2.6および2.6.5より前の古いHadoopバージョンのサポートはSpark 2.2から削除されました。 .0。Scala 2.10のサポートは2.3.0で削除されました。Scala 2.11のサポートはSparkで非推奨になりました= 2.4.1であり、Spark 3.0で削除されます。
したがって、Scalaバージョンは2.12であると想定されます。
以下は、最新のSpark 2.4.1リリースサンプルに示されている Spark/Scalaオンラインガイド のbuild.sbtエントリです。
name := "SimpleApp"
version := "1.0"
scalaVersion := "2.12.8"
libraryDependencies += "org.Apache.spark" %% "spark-sql" % "2.4.1"
IntelliJ IDE内ではすべて正常に動作しますが、アプリケーションは次の例外を除いて失敗します。
Caused by: Java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
'sbt package'コマンドでパッケージを作成し、spark-submitコマンドラインから次のように;
spark-submit -v --class SimpleApp --master local[*] target\scala-2.12\simpleapp_2.12-1.0.jar