2016-10-25 35 views
1

你好〜我对SPARK感兴趣。 我在火花外壳中使用下面的代码。sortBy不是org.apache.spark.rdd.RDD的成员

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程序集,它不起作用。

该错误消息是

[错误]值sortBy不是org.apache.spark.rdd.RDD [(INT,INT)]

[错误] data.map的成员(x =>(x(d),1))。reduceByKey((x,y)=> x + y)。 sortBy(_._ 1) < =这是问题所在。

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

。有什么问题吗?

+0

您使用的是什么版本的火花? – eliasah

+0

我正在使用spark版本2.0.0。 (spark-2.0.0-bin-hadoop2.7) –

+0

尚未加载spark-mllib_2.10版本1.0.0。你知道这有意义吗? – eliasah

回答

2

第一个问题是,你正在使用spark 1.0.0,如果你阅读的文档,你不会找到在RDD类中的任何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" 
+0

它的工作!谢谢〜 –

+0

好〜! upvote !! 如果你不介意,你能否回答一个问题? 如果我想用sparkl-core_2.10来使用MLlib,那么代码是'libraryDependencies + =“org.apache.spark”%“spark-core_2.10”%spark-mllib_2.10%“2.0.0”% “提供”? –

+0

是的,您还需要添加此行以及 – eliasah

相关问题