25

尝试从源代码运行http://spark.apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala

这一行:

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)

正在抛出错误

value reduceByKey is not a member of org.apache.spark.rdd.RDD[(String, Int)]
  val wordCounts = logData.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)

logData.flatMap(line => line.split(" ")).map(word => (word, 1))返回一个 MappedRDD 但我在http://spark.apache.org/docs/0.9.1/api/core/index.html#org.apache.spark.rdd.RDD中找不到这种类型

我正在从 Spark 源运行此代码,所以可能是类路径问题?但是所需的依赖项在我的类路径上。

4

3 回答 3

37

您应该从以下位置导入隐式转换SparkContext

import org.apache.spark.SparkContext._

他们使用“pimp up my library”模式将方法添加到特定类型的 RDD。如果好奇,请参阅SparkContext:1296

于 2014-05-29T22:38:02.647 回答
0

如果您在 ScalaIDE 上使用 maven,我只是通过将依赖项从 spark-streaming 版本 1.2 更新到版本 1.3 来解决问题。

于 2016-11-25T04:03:30.150 回答
0

实际上,您可以在 PairRDDFunctions 类中找到它。PairRDDFunctions 是一个类,它包含通过隐式转换在 (key, value) 对的 RDD 上可用的额外函数。

https://spark.apache.org/docs/2.1.0/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions

于 2017-02-08T19:17:52.523 回答