近似分位数给出的火花中值不正确(Scala)?

2024-06-01 22:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个测试数据:

 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)

所以我正在创建临时表。然后在里面搜索,然后计算结果。只是为了测试。


Tags: dfdatavalueschemavalarraystatlist