【问题标题】:How to use the spark stats?如何使用火花统计数据?
【发布时间】:2020-06-18 03:09:33
【问题描述】:

我正在使用 spark-sql-2.4.1v,我正在尝试在给定数据的每一列上查找分位数,即百分位数 0、百分位数 25 等。

当我在做多个百分位数时,如何从结果中检索每个计算出的百分位数?

这里是一个例子,数据如下:

+----+---------+-------------+----------+-----------+
|  id|     date|total_revenue|con_dist_1| con_dist_2|
+----+---------+-------------+----------+-----------+
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.006628853|         4|0.816039063|
|3310|1/15/2018|   0.01378215|         4|0.082049528|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.006628853|         4|0.816039063|
|3310|1/15/2018|   0.01378215|         4|0.082049528|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.010680705|         6|0.019875458|
|3310|1/15/2018|  0.014933087|         5|0.034681906|
|3310|1/15/2018|  0.014448282|         3|0.082049528|
+----+---------+-------------+----------+-----------+

我需要在“con_dist_1”、“con_dist_2”等上计算百分位数 0、percentile25 等。

我正在为百分位数 50 执行以下操作:

val col_list = Array("con_dist_1","con_dist_2")
val median_col_list = partitioned_data.stat.approxQuantile(col_list, Array(0.5),0.0)
println(median_col_list)

它给出了这个结果:

median_col_list: Array[Array[Double]] = Array(Array(4.0), Array(0.034681906))

如何映射结果?有什么方法哪个结果属于哪一列?请为上述建议提供更好的建议。

【问题讨论】:

    标签: scala apache-spark statistics apache-spark-dataset quantile


    【解决方案1】:

    要同时计算多个百分位数,您可以简单地将它们添加到您输入到approxQuantile 的数组中。例如,对于 0、25、50、75 和 100,您可以按如下方式进行:

    val col_list = Array("con_dist_1", "con_dist_2")
    val percentiles = Array(0.0, 0.25, 0.5, 0.75, 1.0)
    val median_col_list = partitioned_data.stat.approxQuantile(col_list, percentiles, 0.0)
    

    结果现在将是一个包含所有百分位数的数组。

    要知道百分位数对应哪一列很简单,这取决于col_list 的顺序。所以在这种情况下,median_col_list(0) 对应于“con_dist_1”,median_col_list(1) 对应于“con_dist_1”。遵循相同的类比,例如median_col_list(1)(2) 对应于“con_dist_1”列的 50%。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-09
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多