Vin*_*mar 3 scala dataframe apache-spark apache-spark-sql
我有一个包含 n 列的数据框,我想用空值替换所有这些列中的空字符串。
我尝试使用
val ReadDf = rawDF.na.replace("columnA", Map( "" -> null));
Run Code Online (Sandbox Code Playgroud)
和
val ReadDf = rawDF.withColumn("columnA", if($"columnA"=="") lit(null) else $"columnA" );
Run Code Online (Sandbox Code Playgroud)
他们两个都没有工作。
任何线索将不胜感激。谢谢。
您的第一种方法由于一个错误而失败,该错误阻止replace
能够用空值替换值,请参见此处。
您的第二种方法失败了,因为您将驱动程序端 Scala 代码与执行程序端 Dataframe 指令混淆:您的 if-else 表达式将在驱动程序上评估一次(而不是每条记录);你想用函数调用替换它;此外,要比较列的值,您需要使用运算符,而不是仅比较驱动程序端对象的Scala :when
===
==
Column
import org.apache.spark.sql.functions._
rawDF.withColumn("columnA", when($"columnA" === "", lit(null)).otherwise($"columnA"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5875 次 |
最近记录: |