pyspark countApprox()似乎与count()没有什么不同

时间:2018-08-01 12:52:59

标签: python apache-spark pyspark

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

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

有人知道如何使PartialResult在pyspark中工作吗?

我要比较的测试代码:

countApprox

给予:

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)

执行时间几乎相同...

1 个答案:

答案 0 :(得分:0)

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