2016-10-25 15 views
1

こんにちは〜私はSPARKに興味があります。 spark-shellで以下のコードを使用します。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 !! 気にしないでもう一度質問に回答できますか? MLlibをspark-core_2.10で使用する場合、コードは 'libraryDependencies + =" org.apache.spark "%" spark-core_2.10 "%spark-mllib_2.10%" 2.0.0 "% "提供された"? –

+0

はい、この行も追加する必要があります – eliasah

関連する問題