首页 > 解决方案 > 为什么 Spark 比 Python 运行大文件慢?

问题描述

我知道使用 Apache Spark 的主要原因之一是让事情变得比使用 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 秒。它有一个带有 16GB 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 的理由。

标签: pythonapache-sparkpyspark

解决方案


推荐阅读