2015-07-23 2 views
2

Я запускаю 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 
+1

Конечно, есть определенные накладные расходы на выработку Spark, а не просто с прямым кодом Python. Если эти накладные расходы превышают фактическую работу, вы не увидите никаких преимуществ. Какое абсолютное время выполнения вы видите? – deceze

+0

1.6 v 8 секунд –

+0

Звучит так, как ожидалось. Попробуйте выполнить задание, которое занимает несколько часов или, по крайней мере, минуты, чтобы завершить и сравнить. Рабочие места в диапазоне от нескольких секунд не подходят для системы, предназначенной для обработки *** массивного *** анализа данных. – deceze

ответ

0

Как указано в комментариях, Spark не идеален для таких недолговечных работ. Вам лучше запустить его на сотнях файлов, каждый размером не менее нескольких мегабайт. Даже тогда он может насытить скорость чтения жесткого диска до того, как процессор получит 100% -ное использование, в идеале у вас будет хотя бы несколько компьютеров с твердотельными накопителями, чтобы получить реальное преимущество от Spark :)