2015-05-15 2 views
5

Spark fornisce il metodo saveAsTextFile che può memorizzare facilmente RDD[T] su disco o hdf.Come caricare i dati dal file salvato con Spark

T è una classe serializzabile arbitraria.

Voglio invertire l'operazione. Mi chiedo se esiste uno loadFromTextFile che può facilmente caricare un file in RDD[T]?

Vorrei che fosse chiaro:

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 

risposta

10

Prova a utilizzare d1.saveAsObjectFile(path) da memorizzare e val d2 = sc.objectFile[A](path) da caricare.

penso che non si può saveAsTextFile e leggerlo come RDD[A] senza trasformazione da RDD[String]

0

Per creare basato su file RDD, possiamo usare SparkContext.textFile API

Di seguito è riportato un esempio:

val TextFile = sc. textFile ("input.txt")

Possiamo specificare l'URI in modo esplicito.

Se il file è in HDFS:
sc.textFile ("HDFS: // host: port/filepath")

Se il file è in locale:
sc.textFile ("file:/// percorso del file/")

Se il file è S3:

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

Per caricare RDD a speicific Tipo:

Person caso classe (name: String, età: Int)..

val persone = sc.textFile ("Employees.txt") mappa (_ diviso (",")). map (p => Person (p (0), p (1) .trim.toInt))

Qui, le persone saranno di tipo org.apache.spark.rdd.RDD [ Persona]

+0

ma genera RDD [String], ho bisogno di RDD [T]. – worldterminator

+0

Penso che Spark di default non supporti questo. Ma puoi convertire il tuo RDD originale in un tipo specifico. Sto aggiornando la mia risposta. Si prega di verificare. – Ramana

-1

Se si desidera uno schema probabilmente si desidera utilizzare un tipo di output che lo tiene (come Avro, parquet ecc) altrimenti quando caricando si dovrebbe mappare sul RDD e convertirlo nello schema (tipo) desiderato.

Come suggerito dal danese, si può prendere in considerazione l'utilizzo SparkSQL/dataframe che è costruito sulla nozione di schemi