Pyspark VS原生蟒蛇的速度

时间:2015-07-23 12:21:24

标签: python apache-spark pyspark

我在Ubuntu VM上运行Spark(4GB,2核)。我正在对字数进行这种简单的测试。我将它与简单的Python dict()计数器进行比较。我发现Pyspark慢5倍(需要更多时间)。

这是因为初始化还是需要调整参数?

import sys, os

sys.path.append('/home/dirk/spark-1.4.1-bin-hadoop2.6/python')
os.environ['SPARK_HOME']='/home/dirk/spark-1.4.1-bin-hadoop2.6/'
os.environ['SPARK_WORKER_CORES']='2'
os.environ['SPARK_WORKER_MEMORY']='2g'

import time
import py4j
from pyspark import SparkContext, SparkConf
from operator import add

conf=(SparkConf().setMaster('local').setAppName('app'))
sc=SparkContext(conf=conf)

f='big3.txt'

s=time.time()
lines=sc.textFile(f)
counts=lines.flatMap(lambda x:x.split(' ')).map(lambda x: (x,1)).reduceByKey(add)
output=counts.collect()
print len(output)
for (word, count) in output:
    if count>100: print word, count
sc.stop()
print 'elapsed',time.time()-s

s=time.time()
f1=open(f,'r')
freq={}
for line in f1:
    words=line.split(' ')
    for w in words:
        if w not in freq:
            freq[w]=0
        freq[w]+=1
f1.close()
print len(freq)
for (w,c) in freq.iteritems():
    if c>100: print w,c
print 'elapsed',time.time()-s

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,Spark并不适合这种短期工作。您最好在数百个文件上运行它们,每个文件的大小至少为几兆字节。即便如此,在CPU获得100%利用之前,它可能会使硬盘读取速度饱和,理想情况下,您至少拥有几台带有SSD的计算机才能从Spark获得真正的优势:)