2015-10-27 95 views
8

我在这里看到了一个解决方案,但是当我尝试它时对我来说不起作用。在Spark DataFrame中替换空值

首先我导入cars.csv文件:

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

它看起来像以下:

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

那么我这样做:

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

但空值没不会改变。

任何人都可以帮助我吗?

+0

声明'df.na.fill( “E”,SEQ( “空白”))'返回一个新的'DataFrame'所以'df'会不被修改。你将它分配到一个新的'DataFrame'中吗? –

+0

谢谢!我知道了! –

回答

19

这基本上很简单。您需要创建一个新的DataFrame。我正在使用您之前定义的DataFrame df

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

DataFrame s为不变的结构。 每次执行需要存储的转换时,都需要将转换的DataFrame影响到新值。

3

可以实现在java中同样这样

Dataset<Row> filteredData = dataset.na().fill(0); 
相关问题