2015-10-27 28 views
8

Tôi thấy một giải pháp ở đây nhưng khi tôi thử nó không hiệu quả với tôi.Thay thế các giá trị null trong Spark DataFrame

Trước tiên tôi nhập khẩu một tập tin cars.csv:

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

nào trông giống như sau:

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

Sau đó, tôi làm điều này:

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

Nhưng các giá trị null didn không thay đổi.

Có ai có thể giúp tôi không?

+0

Những tuyên bố 'df.na.fill ("e", Seq ("blank")) 'trả về một mới' DataFrame' để 'df' sẽ không được sửa đổi. Bạn có gán nó vào một 'DataFrame' mới không? –

+0

Cảm ơn! Tôi đạt được rồi! –

Trả lời

19

Điều này về cơ bản rất đơn giản. Bạn sẽ cần phải tạo một DataFrame mới. Tôi đang sử dụng số DataFrame df mà bạn đã xác định trước đó.

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

DataFrame s là cấu trúc bất biến. Mỗi lần bạn thực hiện phép chuyển đổi mà bạn cần lưu trữ, bạn sẽ cần phải ảnh hưởng đến giá trị mới DataFrame đã chuyển đổi.

3

bạn có thể đạt được cùng trong java cách này

Dataset<Row> filteredData = dataset.na().fill(0); 
Các vấn đề liên quan