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

时间:2016-10-25 13:12:08

标签: scala apache-spark sbt rdd sbt-assembly

您好〜我对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程序集使用此命令,则无效。

错误消息是

  

[error] value sortBy不是org.apache.spark.rdd.RDD [(Int,Int)]

的成员      

[error] data.map(x =&gt;(x(d),1))。reduceByKey((x,y)=&gt; x + y)。 sortBy(_._ 1)&lt; =这是问题。

我的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"

有什么问题吗?

1 个答案:

答案 0 :(得分:2)

第一个问题是您使用的是spark 1.0.0,如果您阅读了文档,则无法在bootstrapping课程中找到任何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"