【发布时间】:2020-03-13 11:09:37
【问题描述】:
我正在使用 spark-sql-2.4.1v,我正在尝试查找分位数,即 在我给定数据的每一列上,百分位 0、百分位 25 等。 当我在做多个百分位数时,如何检索每个计算的 结果的百分位数?
我的数据框df:
+----+---------+-------------+----------+-----------+-------+
| id| date| revenue|con_dist_1| con_dist_2| zone |
+----+---------+-------------+----------+-----------+-------+
| 10|1/15/2018| 0.010680705| 10|0.019875458| east |
| 10|1/15/2018| 0.006628853| 4|0.816039063| west |
| 10|1/15/2018| 0.01378215| 20|0.082049528| east |
| 10|1/15/2018| 0.010680705| 6|0.019875458| west |
| 10|1/15/2018| 0.006628853| 30|0.816039063| east |
+----+---------+-------------+----------+-----------+-------+
最终的数据框应如下所示,即对于每个区域:
+---+---------+-----------+-------+-------------+-----------+-----------+
| id| date| revenue| zone | perctile_col| quantile_0|quantile_10|
+---+---------+-----------+-------+-------------+-----------+-----------+
| 10|1/15/2018|0.010680705| east | con_dist_1 | 10.0| 30.0|
| 10|1/15/2018|0.010680705| east | con_dist_2 |0.019875458|0.816039063|
| 10|1/15/2018|0.010680705| west | con_dist_1 | 4.0| 6.0|
| 10|1/15/2018|0.010680705| west | con_dist_2 |0.019875458|0.816039063|
+---+---------+-----------+-------+-------------+-----------+-----------+
有什么方法可以使用partitionBy 和approxQuantile 函数吗?
是否会使用repartition("zone") 进行处理,即不收集每个区域的数据集?
【问题讨论】:
-
您打算如何处理此处的收入列(因为结果只有 2 列)?根据文本,预期结果是否与此处的结果类似:stackoverflow.com/questions/60561513/… 但行数是原来的两倍(因为有 2 个区域)?
标签: java scala apache-spark apache-spark-sql quantile