在Spark中,如何快速估算数据框中的元素数量

lov*_*soa 1 approximation apache-spark

在spark中,是否有一种快速的方法来获取数据集中元素数量的近似计数?也就是说,比做起来快Dataset.count()

也许我们可以根据数据集的分区数来计算此信息,可以吗?

Rap*_*oth 6

您可以尝试countApprox在RDD API 上使用,尽管这也会启动一个Spark作业,但它应该更快,因为它可以为您提供您要花费的给定时间(毫秒)和置信区间(即真值在该范围内的可能性):

用法示例:

val cntInterval = df.rdd.countApprox(timeout = 1000L,confidence = 0.90)
val (lowCnt,highCnt) = (cntInterval.initialValue.low, cntInterval.initialValue.high)
Run Code Online (Sandbox Code Playgroud)

您必须使用参数timeoutconfidence。超时时间越长,估计计数越准确。

  • 我已经在大型数据集上尝试过这个方法,但它似乎并没有节省太多(如果有的话..)时间。 (2认同)