首页 > 解决方案 > pyspark countApprox() 似乎与 count() 没有什么不同

问题描述

我在使用count()pyspark 的方法时遇到问题,这对我的程序来说太慢了。我发现了countApprox(timeout,confidence)一个,但它并没有加快这个过程。

我发现做一些研究是我可能应该使用rdd.countApprox.initialValue但它似乎不起作用,因为在 pyspark 中的结果countApprox是一个 int 而不是一个PartialResult对象(我猜它在 scala 或 java 中是不同的)

有谁知道如何countApprox在 pyspark 中工作?

我要比较的测试代码:

a = sc.parallelize(range(1000000),10)

import time
t = time.time()
print("there are ",a.count()," rows")
print(time.time()-t)

给出:

there are  1000000  rows
3.4864296913146973

b = sc.parallelize(range(1000000),10)

import time
t = time.time()
print("there are ",b.countApprox(10,0.1)," rows")
print(time.time()-t)

分发 :

 there are  1000000  rows
3.338970422744751

这几乎是相同的执行时间......

标签: pythonapache-sparkpyspark

解决方案


countApprox 比 count 工作得更快,有超时和置信度定义。我想您会在大型数据集上看到运行时差异。


推荐阅读