2015-05-15 4 views
5

Spark bieten Methode saveAsTextFile, die RDD[T] in Disk oder hdfs leicht speichern können.So laden Sie Daten aus gespeicherter Datei mit Spark

T ist eine beliebige serialisierbare Klasse.

Ich möchte den Vorgang umkehren. Ich frage mich, ob es eine loadFromTextFile gibt, die leicht eine Datei in RDD[T] laden kann?

Lassen Sie mich klarstellen:

class A extends Serializable { 
... 
} 

val path:String = "hdfs..." 
val d1:RDD[A] = create_A 

d1.saveAsTextFile(path) 

val d2:RDD[A] = a_load_function(path) // this is the function I want 

//d2 should be the same as d1 

Antwort

10

Versuchen Sie, d1.saveAsObjectFile(path) zu speichern und val d2 = sc.objectFile[A](path) zu laden.

Ich denke, dass Sie nicht saveAsTextFile und es aus wie RDD[A] ohne Transformation von RDD[String]

0

Datei-basierte RDD erstellen, können wir SparkContext.textFile API

Im Folgenden verwenden ein Beispiel:

val = Text-Datei sc. textFile ("input.txt")

Wir können den URI explizit angeben.

Wenn die Datei in HDFS ist:
sc.textFile ("hdfs: // host: port/filepath")

Wenn die Datei im lokalen ist:
sc.textFile ("file:/// Pfad zur Datei/")

Wenn die Datei S3:

s3.textFile (" S3N: //mybucket/sample.txt ");

RDD laden Typ speicific:

Fall class Person (name: String, Alter: Int)..

val Menschen = sc.textFile ("Employees.txt") Karte (_ Split (",")). map (p => Person (p (0), p (1) .trim.toInt))

Hier sind Leute vom Typ org.apache.spark.rdd.RDD [ Person]

+0

Aber es erzeugt RDD [Zeichenfolge], ich brauche RDD [T]. – worldterminator

+0

Ich denke, Spark unterstützt das standardmäßig nicht. Sie können jedoch Ihre ursprüngliche RDD in einen bestimmten Typ konvertieren. Ich aktualisiere meine Antwort. Bitte überprüfen. – Ramana

-1

lesen Wenn Sie ein Schema wollen Sie wahrscheinlich einen Ausgabetyp verwenden, das es hält (wie Avro, Parkett etc.) sonst, wenn Laden müssen Sie über die RDD zuordnen und es in den gewünschten Schema (Typ) konvertieren.

Wie dänische vorgeschlagen, Sie SparkSQL/Datenrahmen mit berücksichtigen möchten, die auf dem Begriff der Schemata aufgebaut ist