Подтвердить что ты не робот

Метод reduceByKey не найден в Scala Spark

Попытка запустить 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, поэтому может возникнуть проблема с classpath? Но требуемые зависимости находятся в моем пути к классам.

4b9b3361

Ответ 1

Импортируйте неявные преобразования из SparkContext:

import org.apache.spark.SparkContext._

Они используют шаблон "pimp up my library" для добавления методов в RDD определенных типов. Если интересно, см. SparkContext: 1296

Ответ 2

Если вы используете maven на ScalaIDE, я просто решил проблему, обновив зависимость от искробезопасной версии 1.2 до версии 1.3.