2014-06-06 4 views
8

hier gefunden wird, ist Code Ich versuche, für reduceByKey aus:reduceByKey Methode nicht in IntelliJ

import org.apache.spark.rdd.RDD 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkContext 
import scala.math.random 

import org.apache.spark._ 
import org.apache.spark.storage.StorageLevel 

object MapReduce { 

    def main(args: Array[String]) { 

    val sc = new SparkContext("local[4]" , "") 

    val file = sc.textFile("c:/data-files/myfile.txt") 

    val counts = file.flatMap(line => line.split(" ")) 
    .map(word => (word, 1)) 
    .reduceByKey(_ + _) 

    } 

} 

Ist Compiler-Fehler geben:

Wenn ich den Mauszeiger über die Umsetzung von reduceByKey "kann nicht Symbol reduceByKey lösen" es gibt drei mögliche Implementierungen, so dass es scheint es gefunden wird:

enter image description here

+0

Does ist mit SBT kompiliert – maasg

+2

Ich würde IntelliJ Idea Inferenz nicht trauen und so viele Vorschläge machen. Es ist mir sehr viel Zeit vergangen, Fehler in IntelliJ zu sehen, die keine echten Fehler waren. Wahrscheinlich siehst du einen Vorschlag, der nicht wirklich verfügbar ist. –

+0

@ Aldo Stracquadanio yep das war mein Problem, scheint wie kompiliert, zeigt aber immer noch Fehler –

Antwort

11

Sie müssen ignorieren können den folgenden Import zu Ihrer Datei hinzuzufügen:

Import org.apache.spark.SparkContext ._

Spark-Dokumentation:

"In Scala, sind diese Operationen automatisch auf RDDs enthält Tuple2 o bjects (die eingebauten Tupel in der Sprache, erstellt durch einfaches Schreiben (a, b)), , solange Sie org.apache.spark.SparkContext._ in Ihrem Programm importieren, um Sparks implizite Konvertierungen zu ermöglichen. Die Schlüssel/Wert-Paar-Operationen sind in der Klasse PairRDDFunctions verfügbar, die automatisch eine RDD von Tupeln umschließt, wenn Sie die Konvertierungen importieren. "

+0

Laut meiner Antwort hat sich dies in Spark 1.4.x geändert. Während der Import aus der Dokumentation entfernt wurde, muss IntelliJ noch funktionieren und unterscheidet sich jetzt: import org.apache.spark.rdd.RDD._ – Splee

2

Es scheint, als ob das dokumentierte Verhalten in Spark-1.4x geändert hat haben IntelliJ die impliziten Konvertierungen erkennen Sie nun den folgenden Import hinzufügen:?

import org.apache.spark.rdd.RDD._