Как использовать статистику искры? - PullRequest
0 голосов
/ 05 марта 2020

Я использую spark- sql -2.4.1v и пытаюсь найти квантили, то есть процентиль 0, процентиль 25 и т. Д. c, в каждом столбце моих данных.

Как я делаю несколько процентилей, как извлечь каждый вычисленный процентиль из результатов?

Вот пример, имеющий данные, как показано ниже:

+----+---------+-------------+----------+-----------+
|  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|
+----+---------+-------------+----------+-----------+

Мне нужно вычислить процентиль 0 , процентиль25 et c, на «con_dist_1», «con_dist_2», et c.

Я делаю ниже для процентиля 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))

Как отобразить результаты? Есть ли способ, который результат принадлежит к какому столбцу? Пожалуйста, предложите что-нибудь лучшее для перечисленного.

1 Ответ

1 голос
/ 05 марта 2020

Чтобы рассчитать несколько процентилей одновременно, вы можете просто добавить их в массив, который вы вводите в 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)

Теперь результатом будет массив массивов со всеми процентилями.

To узнать, какому столбцу соответствуют процентили, просто, это зависит от порядка col_list. Таким образом, в этом случае median_col_list(0) соответствует «con_dist_1» и median_col_list(1) «con_dist_1». Следуя той же аналогии, например, median_col_list(1)(2) будет соответствовать 50 процентилю для столбца "con_dist_1".

...