Tentative d'exécuter http://spark.Apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala à partir du code source.
Cette ligne:
val wordCounts = textFile.flatMap(line => line.split(" ")).map(Word => (Word, 1)).reduceByKey((a, b) => a + b)
est en train de lancer une erreur
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))
renvoie un MappedRDD mais je ne trouve pas ce type dans http://spark.Apache.org/docs/0.9.1/api/core/index.html#org.Apache.spark.rdd.RDD
J'utilise ce code depuis le code source de Spark, ce qui pourrait poser un problème de classpath. Mais les dépendances requises sont sur mon classpath.
Vous devez importer les conversions implicites de SparkContext
:
import org.Apache.spark.SparkContext._
Ils utilisent le modèle 'pimp up my library' pour ajouter des méthodes aux RDD de types spécifiques. Si vous êtes curieux, voir SparkContext: 1296
En fait, vous pouvez le trouver dans la classe PairRDDFunctions. PairRDDFunctions est une classe contenant des fonctions supplémentaires disponibles sur les RDD de paires (clé, valeur) via une conversion implicite.
https://spark.Apache.org/docs/2.1.0/api/scala/index.html#org.Apache.spark.rdd.PairRDDFunctions
Si vous utilisez maven sur ScalaIDE, je viens de résoudre le problème en mettant à jour la dépendance de la version 1.2 à la version spark.