为什么Pyspark在Windows上比在Linux上慢得多?

时间:2020-09-30 11:48:52

标签: python apache-spark pyspark

好的,所以我是Apache Spark的新手,我尝试使用Python运行一些基本脚本来了解它的样子。现在,我正在尝试以下使用Pyspark的Python脚本来计算某个单词(在此示例中,单词“ word”)出现在目录中一堆Python文件中的实例:

from pyspark import SparkContext
import sys
import os

def get_files(path):
    ls = ''
    for i in os.walk(path):
        directory, ls_files = i[0], i[2]
        for file in ls_files:
            if file.endswith('.py') and not file.startswith('_'):
                path = os.path.join(directory, file)
                ls += path
                ls += ','
    return ls[0:-1]

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print('This program only accpets one argument as input.')
    else:
        files = get_files(sys.argv[1])
        sc = SparkContext()
        num = sc.textFile(files).flatMap(lambda x: x.split(' ')).filter(lambda x: 'word' in x).count()
        print(f'********* \'word\' appears {num} times')

如您所见,我正在使用SparkConf的所有默认选项。

好吧,如果我尝试在Windows上运行此简单程序,并将大约10MB的文件夹和460个.py文件作为参数传递,则大约需要3分钟。在同一台计算机上,我使用Ubuntu在同一文件夹中尝试完全相同的操作,而这实际上需要3秒钟。

如何解释如此巨大的时间差异?我可以理解,也许其中一些程序是为Unix系统设计的,但最终,它是同一处理器,可以在所有8个内核上并行运行多个任务,所以这实际上没有多大意义对我来说,它在Windows上是如此缓慢。

0 个答案:

没有答案