我在使用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)
执行时间几乎相同...
答案 0 :(得分:0)
countApprox的工作速度比count快,具有超时和置信度定义。我想您会在大型数据集上看到运行时差异。