2016-12-27 6 views
0

Интересно, есть ли причина, по которой искра, которую я написал в абзаце Цепплина, выполняется намного быстрее, чем запуск искра?Исправленная работа Apache zepplin работает быстрее, чем spark-submit

В основном я использую ту же конфигурацию (исполнители, память) в Zepplin и spark-submit, но есть столько существенных различий во времени выполнения.

Оба работают на одном автономном искровом скоплении.

Что может объяснить это различие?

+1

Какой код работы? –

+0

@ T.Gawęda Я не думаю, что это код, вероятно, потому, что я использую контекст искры zepplin (sc), sqlContext, который может отличаться от моей свечи conf –

+1

Вы учитываете время запуска/выключения? Я предполагаю, что экземпляр Zeppelin уже запущен, поэтому нет времени запуска. Если вы еще не пытались использовать внутреннюю синхронизацию Scala –

ответ

1

Есть две вещи, о которых я могу думать, что может привести к этому.

  1. При использовании zappelin у вас уже есть искровой контекст, который вы, вероятно, используете. Когда вы делаете искр-submit, вы создаете новую, которая занимает некоторое время.
  2. Даже если ваше время сокращает контекст искры (например, вы считаете только время для фактического задания), в zappelin вы, вероятно, выполняете некоторые другие задания перед текущим. Это может привести к различному кэшированию. Некоторые примеры включают в себя:

    • OS/Hadoop может кэшировать файлы, которые вы читаете, потому что вы читали их в предыдущей ячейке
    • Вы могли бы делать перетасовать вы делали раньше на некотором РДЕ так кэшируются
    • вы могли бы иметь явный кэш
    • вы можете иметь dataframe вы используете для присоединиться уже распределили правильно в предыдущей ячейке
    • список продолжается ...
+0

Да, я думал почти обо всех этих возможностях, но это не объясняет, почему запись в db (около 148 миллионов записей) занимает значительно меньше времени, чем работает в spark-submit. Тот же код, но написанный как разные абзацы в Zepplin. Я мог видеть, как долго выполняются все задачи в пользовательском интерфейсе Spark. –

+0

Когда вы выполняете профилирование, вы можете убедиться, что вы загружаете каждый внешний элемент за пределы профилирования. Например, в вашем программном вызове spark.range (100) .show(), который загрузит контекст искры, затем оберните таймер вокруг самого задания. С другой стороны, в цеппине обязательно запускайте соответствующую ячейку и ничего больше, а затем сравнивайте. Учитывая это, вы должны видеть ту же производительность. Я предполагаю, что, конечно, вы используете ту же конфигурацию для обоих тестов. –

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

  • Нет связанных вопросов^_^