4
標準偏差(stddev)を計算しながらNaNを取得しています。Spark 1.5.2:stddevを計算中のNaN
val df = Seq(("1",19603176695L),("2", 26438904194L),("3",29640527990L),("4",21034972928L),("5", 23975L)).toDF("v","data")
私はUDFのように定義STDDEVています:以下に示すように
def stddev(col: Column) = {
sqrt(mean(col*col) - mean(col)*mean(col))
}
私はNaN
を取得しています、私はUDFを呼び出す:
+------+
|stddev|
+------+
| NaN|
+------+
:
df.agg(stddev(col("data")).as("stddev")).show()
これは、次の生成します
私は何が間違っていますか?
Spark 1.6はどのように大きな数値を処理しますか?この場合、stddevを計算する良い方法はありますか? – Neel
また、なぜダブルにキャストすると機能するのですか? – Neel
'Double.MaxValue'はおおよそ1.79e308であり、' Long.MaxValue'はおよそ9.2e18です。 – zero323