私はこのテストデータを持っている:approxQuantileはSpark(Scala)で不正確な中央値を与えますか?
val data = List(
List(47.5335D),
List(67.5335D),
List(69.5335D),
List(444.1235D),
List(677.5335D)
)
私は中央値は69.5335であることを期待しています。 しかし、私はこのコードの正確な中央値を検索してみてください。
df.stat.approxQuantile(column, Array(0.5), 0)
それは私を与える:444.1235
なぜ、これは、それが固定することができますどのようにでしょうか?
私はこのようにそれをやっている:
val data = List(
List(47.5335D),
List(67.5335D),
List(69.5335D),
List(444.1235D),
List(677.5335D)
)
val rdd = sparkContext.parallelize(data).map(Row.fromSeq(_))
val schema = StructType(Array(
StructField("value", DataTypes.DoubleType, false)
))
val df = sqlContext.createDataFrame(rdd, schema)
df.createOrReplaceTempView(tableName)
val df2 = sc.sql(s"SELECT value FROM $tableName")
val median = df2.stat.approxQuantile("value", Array(0.5), 0)
は、だから私は、一時テーブルを作成しています。次に、内部を検索して結果を計算します。それはテスト用です。
Hmm、strange。別のバージョンだが、まだ69.5335ではない。私は私の質問にすべてのソースを追加しました。 – user2975535