Apache spark 什么';spark sql百分位函数和spark数据帧量化器之间的差异是多少?

Apache spark 什么';spark sql百分位函数和spark数据帧量化器之间的差异是多少?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我想把双倍分数转换成整数。我试过火花量化器,但速度太慢了。完成离散化过程需要几个小时。但当我使用spark sql的函数percentile时,它比quantilediscretizer快得多。那么这两种方法之间的区别是什么?spark sql中实现了哪些优化?默认值不提供任何优化。在内部,它使用naiveTypeDimOperativeAggregate,它收集所有值的计数(请参见和),然后使用结果进行计算 这种方法唯一真正的优点是它非常简单。但是,在最坏的情况下,它需要O(N)个本地内存(感

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

默认值不提供任何优化。在内部,它使用naive
TypeDimOperativeAggregate
,它收集所有值的计数(请参见和),然后使用结果进行计算

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


相比之下,适用于(已修改)的
QuantileDiscretizer
Spark's。这种方法的计算成本更高,但与蛮力近似法不同,它是可伸缩的,并且受数据基数的限制。此外,它的性能可以通过调整
相对误差

来调整,这是非常值得赞赏的。你的回答让我长久以来的困惑变得清晰!谢谢!