我正在使用大量數據集(包含332個字段)在Apache Spark中使用Scala(除了一個字段,其餘331可以爲空),大約10M記錄。但我想用空字符串(「」)替換null。由於我有大量的字段,最好的方法是什麼? 我想在導入這個數據集的時候處理空值,這樣在執行轉換或導出到DF時我會很安全。所以我創建了332個字段的案例類,處理這些空值的最佳方法是什麼?我可以使用Option(field).getOrElse(「」),但我猜這不是最好的方法,因爲我有大量的字段。謝謝!!如何在Apache Spark中使用scala替換空字符串(「」)的空值
1
A
回答
2
我們可以使用udf
獲得安全柱這樣
val df = Seq((1,"Hello"), (2,"world"), (3,null)).toDF("id", "name")
val safeString: String => String = s => if (s == null) "" else s
val udfSafeString = udf(safeString)
val dfSafe = df.select($"id", udfSafeString($"name").alias("name"))
dfSafe.show
如果你有大量的字段,並且其中一列是關鍵列。我們可以這樣做。
val safeCols = df.columns.map(colName =>
if (colName == "id") col(colName)
else udfSafeString(col(colName)).alias(colName))
val dfSafe = df.select(safeCols:_*)
dfSafe.show
0
你應該看看DataFrameNAFunctions。有一些函數可以將不同類型的字段中的空值替換爲默認值。
val naFunctions = explodeDF.na
val nonNullDF = naFunctions.fill("")
這會將字符串字段中的所有空值替換爲「」。
如果您的數據集包含一些字段具有不同的數據類型,那麼您必須通過給出該特定類型的默認值來重複相同的功能。例如,可以給Int字段默認值0.
相關問題
- 1. 如何在Scala中用簡潔的字符串替換空字符串(或null)
- 2. 如何從空值替換java中的空字符串?
- 3. 在multple場替換字符串空值
- 4. 用數組中的空值替換空字符串php
- 5. 在JSONArray中替換空字符串的所有空值
- 6. 如何用數組中的字符串替換空值(python)?
- 7. 在多維數組中使用空字符串值替換空值php
- 8. 在火花scala中替換字符串數組中的空白空間
- 9. 在C中替換/更改空白或空字符串值#
- 10. 如何用「%20」替換字符串中的空格字符?
- 11. 如何在Spark Scala中將空NAN或無限值替換爲默認值
- 12. Spark Spark RDD中的字符串替換
- 13. 在Spark DataFrame中替換空值
- 14. grails乾淨的方式,用空字符串替換空值
- 15. - [R空字符串替換
- 16. 如何用空字符串替換空的HTML標記?
- 17. (Scala)在Apache Spark中將字符串轉換爲日期
- 18. 用空字符串替換非數字
- 19. 如何使用Java中的spark使用Dataframe中的特定值替換空值?
- 20. 用字符串值替換空白/空單元格
- 21. 字符串:用數字替換空格
- 22. 如何在JavaScript中用空格替換所有的\字符串?
- 23. 如何用一個空格替換空格字符串
- 24. 替換字符串中的空格
- 25. 使用空字符串替換未定義的值
- 26. 用xml文件中的空字符串替換字符串
- 27. 使用字符串替換空格後跟帶空格的文本替換
- 28. Scala:如何使用原始匹配值替換字符串
- 29. 如何在php字符串中替換空格字符(')到空格
- 30. 用空格替換字符串
@mtoto不應該將它標記爲此問題的重複:https://stackoverflow.com/questions/33376571/replace-null-values-in-火花非數據幀 – philantrovert