我使用了shell中随机森林的spark实现,这个导入运行正常:
import org.apache.spark.mllib.tree.RandomForest
但是,当我尝试将其编译为独立文件时,它会失败。确切的错误是:
5: object RandomForest is not a member of package org.apache.spark.mllib.tree
我也在我的sbt文件中包含了mllib,所以有人可以告诉我这个错误出现在哪里吗?我的代码:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.mllib.tree.RandomForest
我的sbt档案:
name := "churn"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "1.5.2" % "provided",
"org.apache.spark" % "spark-mllib_2.10" % "1.5.2"
)
编辑:
My-MBP:Churn admin$ sbt 'show libraryDependencies'
[info] Set current project to churn (in build file:/Users/admin/Desktop/Churn/)
[info] List(org.scala-lang:scala-library:2.10.4, org.apache.spark:spark-core_2.10:1.1.0, org.apache.spark:spark-mllib_2.10:1.1.0)
My-MBP:Churn admin$ sbt scalaVersion
[info] Set current project to churn (in build file:/Users/admin/Desktop/Churn/)
[info] 2.10.4
答案 0 :(得分:1)
tl; dr 使用Spark 1.2.0
或更高版本。
根据GitHub org/apache/spark/mllib/tree/RandomForest.scala上the first version that supports Random Forest is 1.2.0的历史记录(请参阅标记文件的标记)。
即使你已经证明你的build.sbt
已声明1.5.2
,sbt 'show libraryDependencies'
的输出也没有按照它说的那样确认:
org.apache.spark:火花mllib_2.10:1.1.0
1.1.0
是您在项目中使用的Spark MLlib的有效版本。该版本不支持Random Forest。