我知道使用apachespark的一个主要原因是使事情比使用python函数“手动”更快。
但是,我有一个叫做 bigger_file.txt
其中有2.7gb,我想计算某个单词(比如“word”)出现的次数。我用pyspark做了以下工作。
From Pyspark import SparkContext
sc = SparkContext()
rdd = sc.textFile('bigger_file.txt')
rdd.filter(lambda x: 'word' in x).count()
这个过程在我的电脑里大约需要40秒。它有一个16 GB ram的intel i7 6700处理器。我用的是ubuntu,但我也在windows上试过,spark在windows上运行得非常慢。另一方面,如果我简单地用python这样做:
num = 0
with open('bigger_file.txt') as f:
for line in txt:
if 'word' in line:
num += 1
然后这个过程大约需要10秒钟。
我确信这与我需要的分区或执行器的数量有关,但是我从spark开始,我不确定什么是配置这个的最佳方式,我尝试的配置并不重要,spark所花的时间似乎基本相同。
所以不管怎样,问题是:我到底应该怎么做才能让spark更快地处理数据?特别是在windows中,处理所有这些数据大约需要40分钟,而仅仅使用python只需要几秒钟。在我看来,我做错了什么,因为否则我看不到使用spark的理由。
暂无答案!
目前还没有任何答案,快来回答吧!