为了账号安全,请及时绑定邮箱和手机立即绑定

Spark 中是精确分位数还是近似分位数?

Spark 中是精确分位数还是近似分位数?

慕工程0101907 2023-08-16 16:24:53
为了计算分位数,我使用可从any或of中的函数approxQuantile访问的方法。这篇文章解释了它的近似方式。stat()DatasetDataframeSpark@Test@DisplayName("Quantiles de la population communale française")public void quantiles() throws TechniqueException {   Dataset<Row> populationCommunes = individus().selectExpr("populationTotale");   double[] quantiles = populationCommunes.stat().approxQuantile("populationTotale", new double[] {0.1, 0.25, 0.5, 0.75, 0.9}, 0);   LOGGER.info("Population des communes françaises :\n Q(10%) : {}, Q(25%) = {}, Q(50%) = {}, Q(75%) = {}, Q(90%) = {}",       quantiles[0], quantiles[1], quantiles[2], quantiles[3], quantiles[4]); }结果令人放心:Population des communes françaises : Q(10%) : 105.0, Q(25%) = 204.0, Q(50%) = 468.0, Q(75%) = 1186.0, Q(90%) = 3250.0但如果我真的想要得到精确的分位数值,而不是近似值,我该如何实现呢Spark?在这里,我有大约 35,000 个城市:我很乐意Spark花时间研究 的每个值Dataset。
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超8个赞

Spark 中的函数approxQuantile可用于计算精确的分位数。从文档中我们看到有3个参数:

public double[][] approxQuantile(String[] cols, double[] probabilities, double relativeError)

最后一个是relativeError. 这里的描述说:

relativeError - 要达到的相对目标精度(大于或等于 0)。如果设置为零,则计算精确的分位数,这可能非常昂贵。请注意,接受大于 1 的值,但给出的结果与 1 相同。

所以你需要做的就是将此参数设置为 0.0。



查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号