2017-07-06 3 views
1

Ich versuche collectAsMap() in der folgenden Aussage zu verwenden:Wert collectAsMap ist kein Mitglied von org.apache.spark.rdd.RDD

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 
import org.apache.spark.broadcast.Broadcast 
import org.apache.spark.rdd.RDD 
... 
documents_input. 
    filter(_ != documents_header). 
    map(_.split(",")). 
    map(Document.parse(_)). 
    keyBy((_.id)).collectAsMap() 

Jedoch habe ich die folgende Störung erhalte:

value collectAsMap is not a member of org.apache.spark.rdd.RDD[(Int, `com.codependent.MyApp.Document)]` 

Irgendeine Idee warum oder wie ich das Array in eine Karte verwandeln könnte?

+0

die entsprechenden Importe überprüfen und sehen [diese Klasse doc, wo die Methode Mitglied ist] (https://spark.apache.org/docs/0.8.0/api/core/org/apache /spark/rdd/PairRDDFunctions.html) –

Antwort

2

Feste nach den Einfuhren als Ram Ghadiyaram Aktualisierung vorgeschlagen:

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.broadcast.Broadcast 
import org.apache.spark.rdd.RDD 
0

Es hängt davon ab, wie Sie die documents_input lesen. Wenn Sie es mit sparkContext lesen, sollten Sie collectAsMap verwenden können. Aber wenn Sie das documents_input als Source oder irgendein anderes scala api gelesen haben, dann collectAsMap nicht den Trick tun. In diesem Fall können Sie toMap

+1

In diesem Fall müssen Sie 'toMap'.hier nicht verwenden. Das impliits für PairRDDFunctions erkennt eine Two-Tuple-basierte RDD und wendet die PairRDDFunctions-Methode automatisch an. –

+0

Ja, ich habe das @RamGhadiyaram :) Ich habe gerade etwas Wissen für andere geteilt. :) –

Verwandte Themen