Spark“用0替换null”性能比较

时间:2016-10-25 18:23:01

标签: apache-spark spark-dataframe

Spark 1.6.1,Scala api。

对于数据帧,我需要将某个列的所有空值替换为0。 我有两种方法可以做到这一点。 1。

myDF.withColumn("pipConfidence", when($"mycol".isNull, 0).otherwise($"mycol"))

2

myDF.na.fill(0, Seq("mycol"))

它们基本相同还是首选方式?

谢谢!

1 个答案:

答案 0 :(得分:11)

有不一样但性能应该相似。 na.fill使用coalesce,但不仅NaN取代NULLsNULLS

val y = when($"x" === 0, $"x".cast("double")).when($"x" === 1, lit(null)).otherwise(lit("NaN").cast("double"))
val df = spark.range(0, 3).toDF("x").withColumn("y", y)

df.withColumn("y", when($"y".isNull(), 0.0).otherwise($"y")).show()
df.na.fill(0.0, Seq("y")).show()