2016-10-25 34 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

相關問題