我有這樣的測試數據: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)
所以我創建臨時表。然後在裏面搜索,然後計算結果。這只是爲了測試。
嗯,奇怪。另一個版本,但仍然不是69.5335。我已將所有來源添加到我的問題中。 – user2975535