好吧,我对apachespark还不熟悉,我试着用python运行一些基本的脚本,看看它是什么样子。现在我正在尝试下面的python脚本,它使用pyspark来计算某个单词(在本例中,单词“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上运行如此之慢对我来说并没有多大意义。
暂无答案!
目前还没有任何答案,快来回答吧!