Ответ 1
Импортируйте неявные преобразования из SparkContext
:
import org.apache.spark.SparkContext._
Они используют шаблон "pimp up my library" для добавления методов в RDD определенных типов. Если интересно, см. SparkContext: 1296
Попытка запустить 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? Но требуемые зависимости находятся в моем пути к классам.
Импортируйте неявные преобразования из SparkContext
:
import org.apache.spark.SparkContext._
Они используют шаблон "pimp up my library" для добавления методов в RDD определенных типов. Если интересно, см. SparkContext: 1296
Если вы используете maven на ScalaIDE, я просто решил проблему, обновив зависимость от искробезопасной версии 1.2 до версии 1.3.
Собственно, вы можете найти его в классе PairRDDFunctions. PairRDDFunctions - это класс, содержащий дополнительные функции, доступные для RDD пар (ключ, значение) через неявное преобразование.
https://spark.apache.org/docs/2.1.0/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions