【问题标题】:sortBy is not a member of org.apache.spark.rdd.RDDsortBy 不是 org.apache.spark.rdd.RDD 的成员
【发布时间】:2016-10-25 21:37:02
【问题描述】:

你好~我对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] 值 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"

有什么问题吗?

【问题讨论】:

  • 你用的是什么版本的spark?
  • 我使用的是 spark 2.0.0 版。 (spark-2.0.0-bin-hadoop2.7)
  • 但您正在加载 spark-mllib_2.10 版本 1.0.0。你知道这有意义吗?
  • 其实..我不太清楚这个...要不要换成spark-mllib_2.10 2.0.0版.??
  • 另外,我的 plugins.sbt 代码是 addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")。还好吗?

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


【解决方案1】:

第一个问题是您使用的是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"

【讨论】:

  • 好的~!点赞!!如果你不介意,你能再回答一个问题吗?如果我想将 MLlib 与 spark-core_2.10 一起使用,那么代码是 libraryDependencies += "org.apache.spark" % "spark-core_2.10" % spark-mllib_2.10 % "2.0.0" % "provided" ?
  • 非常感谢!祝你有美好的一天~
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2016-02-15
  • 1970-01-01
  • 2016-05-20
  • 2018-03-27
  • 1970-01-01
相关资源
最近更新 更多