Я запускаю Spark на виртуальной машине Ubuntu (4 ГБ, 2 ядра). Я делаю это простое испытание количества слов. Я сравниваю его с простым счетчиком Python dict()
. Я нахожу, что Pyspark в 5 раз медленнее (занимает больше времени).Pyspark VS native python speed
Это из-за инициализации или мне нужно настроить параметр?
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
Конечно, есть определенные накладные расходы на выработку Spark, а не просто с прямым кодом Python. Если эти накладные расходы превышают фактическую работу, вы не увидите никаких преимуществ. Какое абсолютное время выполнения вы видите? – deceze
1.6 v 8 секунд –
Звучит так, как ожидалось. Попробуйте выполнить задание, которое занимает несколько часов или, по крайней мере, минуты, чтобы завершить и сравнить. Рабочие места в диапазоне от нескольких секунд не подходят для системы, предназначенной для обработки *** массивного *** анализа данных. – deceze