sortBy 不是 org.apache.spark.rdd.RDD 的成员

sortBy is not a member of org.apache.spark.rdd.RDD

你好~我对SPARK很感兴趣。 我在 spark-shell.

中使用下面的代码
val data = sc.parallelize(Array(Array(1,2,3), Array(2,3,4), Array(1,2,1))
res6: org.apache.spark.rdd.RDD[Array[Int]] = ParallelCollectionRDD[0] at parallelize at <console>:26

data.map(x => (x(d), 1)).reduceByKey((x,y) => x + y).sortBy(_._1)
res9: Array[(Int, Int)] = Array((1,2), (2,1))

有效。但是,如果我使用 sbt assembly 来使用这个命令,它是行不通的。

错误信息是

[error] value sortBy is not a member of org.apache.spark.rdd.RDD[(Int, Int)]

[error] data.map(x => (x(d), 1)).reduceByKey((x,y) => x + y).sortBy(_._1) <= here is the problem.

我的build.sbt代码是

import AssemblyKeys._

assemblySettings

name := "buc"

version := "0.1"

scalaVersion := "2.10.5"

libraryDependencies += "org.apache.spark" % "spark-mllib_2.10" % "1.0.0" % "provided"

有什么问题吗?

第一个问题是您正在使用 spark 1.0.0,如果您阅读文档,您将不会在 RDD class 中找到任何 sortBy 方法。所以,你应该从 1.0.x 更新到 2.0.x

另一方面,spark-mllib 依赖项用于获取 Spark MLlib 库,这不是您所需要的。您需要获取 spark-core 的依赖项:

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "2.0.0" % "provided"