2015-10-02 4 views
1

У меня есть текстовый файл 2MB в/usr/local/share/data /. И затем я бегу против следующего кода в Apache Spark.Apache Spark slow on reduceByKey step

conf = SparkConf().setMaster("local[*]").setAppName("test").set("spark.executor.memory", "2g") 
sc = SparkContext(conf=conf) 
doc_rdd = sc.textFile("/usr/local/share/data/") 
unigrams = doc_rdd.flatMap(word_tokenize) 
step1 = unigrams.flatMap(word_pos_tagging) 
step2 = step1.filter(lambda x: filter_punctuation(x[0])) 
step3 = step2.map(lambda x: (x, 1)) 
freq_unigrams = step3.reduceByKey(lambda x, y: x + y) 

Ожидаемый результат

[((u'showing', 'VBG'), 24), ((u'Ave', 'NNP'), 1), ((u'Scrilla364', 'NNP'), 1), ((u'internally', 'RB'), 4), ...] 

Но это занимает очень очень долго (6 минут), чтобы вернуть ожидаемое количество слов. Он ступает на шаги reduceByKey. Как решить эту проблему с производительностью?

- Справочник -

Спецификация оборудования

Название модели: MacBook Air Модель Идентификатор: MacBookAir4,2 Процессор Имя: Intel Core i7 Процессор Скорость: 1,8 ГГц Количество Процессоры: 1 Общее количество ядер: 2 L2 Кэш (на ядро): 256 КБ L3 Кэш: 4 МБ Память: 4 ГБ

Вход

15/10/02 16:05:12 INFO HadoopRDD: Input split: file:/usr/local/share/data/enronsent01:0+873602 
15/10/02 16:05:12 INFO HadoopRDD: Input split: file:/usr/local/share/data/enronsent01:873602+873602 
15/10/02 16:09:11 INFO BlockManagerInfo: Removed broadcast_2_piece0 on localhost:53478 in memory (size: 4.1 KB, free: 530.0 MB) 
15/10/02 16:09:11 INFO BlockManagerInfo: Removed broadcast_3_piece0 on localhost:53478 in memory (size: 4.6 KB, free: 530.0 MB) 
15/10/02 16:09:11 INFO ContextCleaner: Cleaned accumulator 4 
15/10/02 16:09:11 INFO ContextCleaner: Cleaned accumulator 3 
15/10/02 16:09:11 INFO BlockManagerInfo: Removed broadcast_1_piece0 on localhost:53478 in memory (size: 3.9 KB, free: 530.0 MB) 
15/10/02 16:09:11 INFO ContextCleaner: Cleaned accumulator 2 
15/10/02 16:10:05 INFO PythonRDD: Times: total = 292892, boot = 8, init = 275, finish = 292609 
15/10/02 16:10:05 INFO Executor: Finished task 1.0 in stage 3.0 (TID 4). 2373 bytes result sent to driver 
15/10/02 16:10:05 INFO TaskSetManager: Finished task 1.0 in stage 3.0 (TID 4) in 292956 ms on localhost (1/2) 
15/10/02 16:10:35 INFO PythonRDD: Times: total = 322562, boot = 5, init = 276, finish = 322281 
15/10/02 16:10:35 INFO Executor: Finished task 0.0 in stage 3.0 (TID 3). 2373 bytes result sent to driver 
15/10/02 16:10:35 INFO TaskSetManager: Finished task 0.0 in stage 3.0 (TID 3) in 322591 ms on localhost (2/2) 
+0

Сколько разделов было создано? doc_rdd.partitions.length или не будет выполняться никаких задач. – WoodChopper

+0

та же проблема ... Любой окончательный ответ? – guilhermecgs

ответ

1

Код выглядит отлично.

Вы можете попробовать несколько вариантов улучшения производительности.

SparkConf().setMaster("local[*]").setAppName("test").set("spark.executor.memory", "2g") 

local ->local[*] если задача разбивается - это может занять ряд основных имеющихся на машине
И если возможно увеличить объем памяти, доступной для программы

P.S. И чтобы оценить Spark - у вас должно быть хорошее количество данных, так как вы можете запустить его на кластере

+0

Я пытаюсь установить локальный [*] или локальный [2], но проблема все еще существует. –

+0

Более подробную информацию о моей аппаратной спецификации: Обзор Оборудование: Название модели: \t MacBook Air Identifier Модель: \t MacBookAir4,2 Процессор Название: \t Intel Core i7 Частота процессора: 1,8 ГГц \t Количество процессоров: 1 \t Общее количество ядер: 2 \t кэш L2 (на ядро): \t 256 КБ кэш L3: \t 4 МБ Память: \t 4 ГБ –

+0

ли .set ("spark.executor.memory", "3g") таким образом, для увеличения объема памяти, доступной для p rogram –

Смежные вопросы