2015-05-27 4 views
8

Я довольно новичок в Spark, в настоящее время изучая его, играя с pyspark и искровой оболочкой.Python vs Scala (для Spark jobs)

Итак, вот ситуация, я запускаю ту же самую искру с помощью pyspark и spark-shell.

Это из pyspark:

textfile = sc.textFile('/var/log_samples/mini_log_2') 
textfile.count() 

И это одна из искрового оболочки:

textfile = sc.textFile("file:///var/log_samples/mini_log_2") 
textfile.count() 

Я попробовал оба из них несколько раз, первый (Python) один занимает 30-35 секунд, чтобы полный, а второй (scala) занимает около 15 секунд. Мне интересно, что может привести к разным результатам? Это из-за выбора языка или искровой оболочки сделать что-то в фоновом режиме, что pyspark нет?

UPDATE

Так что я сделал несколько тестов на больших наборах данных, около 550 Гб (Молнии) в общей сложности. Я использую Spark Standalone в качестве мастера.

Я заметил, что при использовании pyspark задачи одинаково распределяются между исполнителями. Однако при использовании искровой оболочки задачи не распределяются одинаково. Более мощные машины получают больше задач, в то время как более слабые машины получают меньше задач.

С искр-оболочкой, работа закончена через 25 минут, а с pyspark - около 55 минут. Как я могу заставить Spark Standalone назначать задачи с помощью pyspark, поскольку он назначает задачи с помощью искровой оболочки?

spark-shell

Pyspark

ответ

1

Использование Python имеет некоторые накладные расходы, но это значение зависит от того, что вы делаете. Хотя в последних отчетах указывается, что накладные расходы не очень большие (specifically for the new DataFrame API)

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

Еще одно потенциальное узкое место - это операции, которые применяют функцию python для каждого элемента (карты и т. Д.). Если эти операции релевантны для вас, вы также должны их протестировать.

+0

Вопрос обновлен, извините за поздний ответ. – gunererd

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