为什么我的apachespark作业比常规Python程序慢?

2024-03-28 17:22:21 发布

您现在位置:Python中文网/ 问答频道 /正文

这只是一个简单的程序,它计算日志文件中的行数。日志文件约为6GB。我运行了以下两个程序:

常规Python程序

import datetime

begining = datetime.datetime.now()
if __name__ == "__main__":
    num_lines = sum(1 for line in open('/Users/victor/access.log'))
    print "The file contains of %s lines" % num_lines
    ending = datetime.datetime.now()
    print "processed in: %s" % (ending - begining)

使用Python的Spark版本

^{pr2}$

因为spark是用于并行处理的,所以我认为它应该比常规python程序更快。然而,在我运行了带有4个处理核心的spark版本之后,几乎需要45s来完成任务,而常规程序只需要8s。为什么?如何改进Spark版本使其比普通版本更快?

据我所知,Spark将文件分成许多块并并行处理,但仍需要一些时间来初始化作业。在这种情况下,初始化作业所需的时间与常规python程序处理时间(主要是加载文件时)相比太大了。如果我是正确的,Spark版本优于常规版本的文件的大小是多少?


Tags: 文件in程序版本datetimeending时间now