2016-10-25 2 views
1

안녕하세요 ~ SPARK에 관심이 있어요. 스파크 셸에서이 코드를 사용합니다.sortBy is 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

스파크 버전 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 !! 괜찮 으면 한 가지 더 대답 할 수 있습니까? spark-core_2.10과 함께 MLlib를 사용하고자한다면, 코드는'libraryDependencies + = "org.apache.spark"% "spark-core_2.10"% spark-mllib_2.10 % "2.0.0"% "제공"? –

+0

예,이 줄도 추가해야합니다. – eliasah

관련 문제