Scala Spark中找不到reduceByKey方法

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,但是我在Spark RDD API文档中找不到这个类型。 我正在从Spark源代码运行此代码,所以可能是类路径问题吗?但是所需的依赖项已经在我的类路径中了。
3个回答

37

您应该从SparkContext中导入隐式转换:

import org.apache.spark.SparkContext._

他们使用“ pimp up my library”模式向特定类型的RDD添加方法。如果您感兴趣,请参见SparkContext:1296


太好了,帮了我一个大忙。谢谢。 - Ken Williams
5
点赞了。为什么IntelliJ没有自动识别出来呢? - botkop
这对我不起作用。我正在使用Eclipse,以下是我的<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.3.0</version> </dependency> - Amrish Pandey
@AmrishPandey 你正在使用Spark 2.X:你需要执行import org.apache.spark.SparkSession._ - WestCoastProjects

0

0
如果您在ScalaIDE上使用Maven,我刚刚通过将spark-streaming版本从1.2更新到1.3来解决了该问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接