Я получаю NaN при расчете стандартного отклонения (stddev). Это очень простой случай использования, как описано ниже:Искры 1.5.2: NaN при вычислении stddev
val df = Seq(("1",19603176695L),("2", 26438904194L),("3",29640527990L),("4",21034972928L),("5", 23975L)).toDF("v","data")
Я в STDDEV определенный как UDF:
def stddev(col: Column) = {
sqrt(mean(col*col) - mean(col)*mean(col))
}
я получаю NaN
, когда я называю UDF, как показано ниже:
df.agg(stddev(col("data")).as("stddev")).show()
Он производит следующее:
+------+
|stddev|
+------+
| NaN|
+------+
Что я делаю неправильно?
Каким образом Spark 1.6 обрабатывает большие количества? Есть ли лучший способ расчета stddev в этом случае? – Neel
Кроме того, почему это срабатывает при двойном нажатии? – Neel
Потому что 'Double.MaxValue' примерно 1.79e308, а' Long.MaxValue' - около 9.2e18. – zero323