ここの例に基づいて、Apache scalaでsparkを使用して自己完結型アプリケーションを実行しようとしています: http://spark.Apache。 org/docs/latest/ml-pipeline.html
これが私の完全なコードです:
import org.Apache.spark.ml.classification.LogisticRegression
import org.Apache.spark.ml.linalg.{Vector, Vectors}
import org.Apache.spark.ml.param.ParamMap
import org.Apache.spark.sql.Row
object mllibexample1 {
def main(args: Array[String]) {
val spark = SparkSession
.builder()
.master("local[*]")
.appName("logistic regression example 1")
.getOrCreate()
val training = spark.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")
val lr = new LogisticRegression()
println("LogisticRegression parameters:\n" + lr.explainParams() + "\n")
lr.setMaxIter(100)
.setRegParam(0.01)
val model1 = lr.fit(training)
println("Model 1 was fit using parameters: " + model1.parent.extractParamMap)
}
}
Build.sbtの依存関係:
name := "example"
version := "1.0.0"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.Apache.spark" %% "spark-core" % "2.0.1",
"org.Apache.spark" %% "spark-sql" % "2.0.1",
"org.Apache.spark" %% "spark-mllib-local" % "2.0.1",
"com.github.fommil.netlib" % "all" % "1.1.2"
)
ただし、sbt Shellでプログラムを実行した後、次のエラーが発生しました。
[info] Compiling 1 Scala source to /dataplatform/example/target/scala-2.11/classes...
[error] /dataplatform/example/src/main/scala/mllibexample1.scala:1: object classification is not a member of package org.Apache.spark.ml
[error] import org.Apache.spark.ml.classification.LogisticRegression
[error] ^
[error] /dataplatform/example/src/main/scala/mllibexample1.scala:3: object param is not a member of package org.Apache.spark.ml
[error] import org.Apache.spark.ml.param.ParamMap
[error] ^
[error] /dataplatform/example/src/main/scala/mllibexample1.scala:8: not found: value SparkSession
[error] val spark = SparkSession
[error] ^
[error] /dataplatform/example/src/main/scala/mllibexample1.scala:22: not found: type LogisticRegression
[error] val lr = new LogisticRegression()
このコードをsparkインタラクティブシェルで正常に実行できます。*。sbtファイルで何かを見逃しましたか?
ありがとう、バユ
MLlibの依存関係を見逃しました:
"org.Apache.spark" %% "spark-mllib" % "2.0.1"
ローカルでは不十分です。
同じ問題が発生し、Maven Scalaプロジェクトがあります。
以下のMaven依存関係を使用しました。このMaven依存関係を追加した後、問題は解決されました。
<dependency>
<groupId>org.Apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.0.2</version>
</dependency