首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spark sql percentile函数和spark dataframe分量器有什么不同?

spark sql percentile函数和spark dataframe分量器有什么不同?
EN

Stack Overflow用户
提问于 2019-06-24 12:52:31
回答 1查看 515关注 0票数 1

我想把双倍分数转换成整数。我试过spark quantilediscretizer,但它太慢了。完成离散化过程需要几个小时。但是当我使用spark-sql的percentile函数时,它比quantilediscretizer快得多。那么,这两种方法之间有什么不同?在spark-sql中实现了哪些优化?

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 14:19:35

默认percentile不提供任何优化。在内部,它使用naive TypedImperativeAggregate,收集所有值的计数(参见it's updatemerge),然后将结果用于compute quantiles locally

这种方法唯一真正的性能优势是它非常简单。然而,在最坏的情况下,它需要O(N)本地内存(感兴趣的列中的所有值都是唯一的),因此它是不可伸缩的,只能在相当有限的场景中应用。

相比之下,QuantileDiscretizer uses Spark的approxQuantile应用了(修改后的) Greenwald-Khanna algorithm。这种方法的计算成本更高,但与蛮力分配不同,它是可伸缩的,并且受到数据基数的限制。此外,还可以通过调整relativeError来调整其性能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56730017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档