scala - REPL 返回 RDD 值,但 SBT 无法编译

标签 scala apache-spark sbt apache-spark-mllib

当从新的 Spark shell REPL session 运行以下方法时,一切正常。但是,当我尝试编译包含此方法的类时,出现以下错误

Error:(21, 50) value values is not a member of org.apache.spark.rdd.RDD[(Long, org.apache.spark.mllib.recommendation.Rating)]
val training = ratings.filter(x => x._1 < 6).values.repartition(numPartitions).persist
                                             ^
Error:(22, 65) value values is not a member of org.apache.spark.rdd.RDD[(Long, org.apache.spark.mllib.recommendation.Rating)]
val validation = ratings.filter(x => x._1 >= 6 && x._1 < 8).values.repartition(numPartitions).persist
                                                            ^
Error:(23, 47) value values is not a member of org.apache.spark.rdd.RDD[(Long, org.apache.spark.mllib.recommendation.Rating)]
val test = ratings.filter(x => x._1 >= 8).values.persist
                                          ^

在这两种情况下,我都使用 Spark 1.0.1 代码本身如下。

def createDataset(ratings: RDD[Tuple2[Long,Rating]]): List[RDD[Rating]] = {

    val training = ratings.filter(x => x._1 < 6).values.repartition(numPartitions).persist
    val validation = ratings.filter(x => x._1 >= 6 && x._1 < 8).values.repartition(numPartitions).persist
    val test = ratings.filter(x => x._1 >= 8).values.persist
    val numTraining = training.count
    val numValidation = validation.count
    val numTest = test.count

    println(" Number Of Training ::: " + numTraining + " numValidation ::: " + numValidation + " ::: " + numTest)
    List(training,validation,test)
  }

它取自 MLLib 教程(稍作修改),不知道出了什么问题。

最佳答案

您需要在代码中包含此行

import org.apache.spark.SparkContext._

这会将隐式转换导入 PairRDDFunctions这就是您可以调用的原因。 Spark REPL 会为您导入此内容,这就是您在解释器中看不到错误的原因。具体来说,SparkContext 中的这个函数会执行转换。

implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])
      (implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null) = {
    new PairRDDFunctions(rdd)
  }

关于scala - REPL 返回 RDD 值,但 SBT 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002088/

相关文章:

sbt - 当构建中没有定义默认值时,在命令行上设置设置值?

Scalac 无法推断归纳构建的路径相关类型

c++ - 在scala中加载本地库时出错

java - 为什么我的Spark程序在IntelliJ中运行良好,但提交后抛出 "org.apache.spark.SparkException: Task not serializable"?

hadoop - Mesos上的独立Spark集群访问其他Hadoop集群中的HDFS数据

playframework - sbt 0.13.5 "URI has an authority component"错误,同时解决 Play 2.3.0 项目的依赖关系

Scala 结束流的简写?

scala - 关于将 Scala 2.9 编译器插件迁移到 2.10 的任何信息?

java - OrcRelation不可分配给HadoopFsRelation

scala - 如何在多个项目之间共享 sbt 插件配置?