在计算标准差(stddev)时,我得到了NaN。 如下所述,这是一个非常简单的用例:
val df = Seq(("1",19603176695L),("2", 26438904194L),("3",29640527990L),("4",21034972928L),("5", 23975L)).toDF("v","data")
我把标准差定义为一个UDF:
def stddev(col: Column) = {
sqrt(mean(col*col) - mean(col)*mean(col))
}
当我如下调用UDF时,会得到NaN
:
df.agg(stddev(col("data")).as("stddev")).show()
它会产生以下结果:
+------+
|stddev|
+------+
| NaN|
+------+
我做错了什么?
Double.MaxValue
大约是1.79e308,而Long.MaxValue
大约是9.2e18。 - zero323