如何使用火花统计?
How to use the spark stats?
我正在使用 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、百分位数 25 等
我正在为第 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))
如何映射结果?有什么方法可以使结果属于哪一列?以上还有更好的建议吗
要同时计算多个百分位数,您可以简单地将它们添加到您输入到 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 个百分位数。
我正在使用 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、百分位数 25 等我正在为第 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))
如何映射结果?有什么方法可以使结果属于哪一列?以上还有更好的建议吗
要同时计算多个百分位数,您可以简单地将它们添加到您输入到 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 个百分位数。