2016-10-25 31 views
2

Spark 1.6.1、Scala api。Spark "0を0に置き換える"性能比較

データフレームでは、特定の列のすべてのNULL値を0に置き換える必要があります。 これを行うには2つの方法があります。 1.

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

2.

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

彼らは本質的に同じまたは1つの方法が望ましいですか?

ありがとうございました!

答えて

3

同じではありませんが、パフォーマンスは似ている必要があります。 na.fillは​​3210を使用しますが、NaNNULLsの代わりにNULLSを置き換えます。

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 
関連する問題