2015-10-27 18 views
8

Ho visto una soluzione qui ma quando l'ho provata non funziona per me.Sostituisci valori null in Spark DataFrame

Per prima cosa ho importare un file cars.csv:

val df = sqlContext.read 
       .format("com.databricks.spark.csv") 
       .option("header", "true") 
       .load("/usr/local/spark/cars.csv") 

che si presenta come il seguente:

+----+-----+-----+--------------------+-----+ 
|year| make|model|    comment|blank| 
+----+-----+-----+--------------------+-----+ 
|2012|Tesla| S|   No comment|  | 
|1997| Ford| E350|Go get one now th...|  | 
|2015|Chevy| Volt|    null| null| 

Poi faccio questo:

df.na.fill("e",Seq("blank")) 

ma i valori nulli didn cambiare.

Qualcuno può aiutarmi?

+0

La dichiarazione 'df.na.fill ("E", Seq ("bianco"))' restituisce un nuovo '' DataFrame' così df' sarà non essere modificato. Lo stai assegnando a un nuovo 'DataFrame'? –

+0

Grazie! Capito! –

risposta

19

Questo è fondamentalmente molto semplice. Dovrai creare un nuovo DataFrame. Sto usando il DataFrame df che hai definito in precedenza.

val newDf = df.na.fill("e",Seq("blank")) 

DataFrame s sono strutture immutabili. Ogni volta che si esegue una trasformazione che è necessario memorizzare, sarà necessario modificare il DataFrame trasformato in un nuovo valore.

3

è possibile ottenere lo stesso in java questo modo

Dataset<Row> filteredData = dataset.na().fill(0); 
Problemi correlati