web-dev-qa-db-fra.com

Remplacez les valeurs nulles dans Spark DataFrame

J'ai vu une solution ici mais quand j'ai essayé ça ne marche pas pour moi.

D'abord, j'importe un fichier cars.csv:

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

Qui ressemble à ceci:

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

Ensuite, je fais ceci:

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

Mais les valeurs nulles n'ont pas changé.

Quelqu'un peut-il m'aider ?

16
Gavin Niu

C'est fondamentalement très simple. Vous devrez créer un nouveau DataFrame. J'utilise le DataFrame df que vous avez défini précédemment.

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

DataFrames sont structures immuables. Chaque fois que vous effectuez une transformation que vous devez stocker, vous devrez affecter le DataFrame transformé à une nouvelle valeur.

28
eliasah

vous pouvez obtenir la même chose en Java de cette façon

Dataset<Row> filteredData = dataset.na().fill(0);
4
Bhagwati Malav