Я изучаю нижеприведенные опции для повторного выполнения scala scode, представленного в SparkПожалуйста, помогите мне с вашими входами:
а.Пакет 1 - Scala-код создан и содержит полный набор операторов SPARK SQL.Весь этот код передается в Spark с использованием Livy в форме отправки кода.Для реализации функциональной логики он создает план около 400 фреймов данных один за другим.
b.Код, который передается в Livy с использованием шага a.выше не запускает выполнение и занимает около 5 минут, чтобы просто проанализировать весь SPARK SQL вместе с другим кодом API dataframe / dataset.Все еще нет выполнения / действия на этом этапе.
с.Пакет 2 - Я отправляю пару действий Count на кадрах данных, присутствующих последними в коде на Livy, как часть 2-го пакета, чтобы выполнение могло инициироваться поверх того же сеанса, который был создан в Пакете 1. Причина, по которой я разделяюВыполнение из представления кода происходит, анализ кода занимает много времени (около 5 минут), а время выполнения составляет около 2 минут.Итак, всего работа заканчивается за 7 минут.Но если мы объединяем Batch1 и Batch2, получается, что выполнение занимает всего 7 минут.Так как подсчет запускает действие, я могу ясно видеть, что вся обработка заканчивается всего за 2 минуты, если передача кода уже произошла.
Я могу выполнить описанные выше шаги и четко видеть, что разделение 5 минут для отправки кода на Livy и время выполнения 2 минуты в пределах spark.Их можно разделить и запустить индивидуально.Например (грубый), я могу запустить пакет 1 утром 9 часов утра, который отправит код, а пакет 2 начнет выполнение, как только данные будут загружены в 9:30.Сеанс Livy остается в режиме RUNNING на кластере с использованием только 1-2 ядер в рамках отправки кода (проверяется как часть пользовательского интерфейса менеджера ресурсов YARN).После запуска пакета 2 весь результат обработки будет доступен всего через 2 минуты.
До этого момента все, кажется, работало так, как это объяснялось выше.
Теперь у меня возникает вопрос: можно ли повторить выполнение с тем же кодом?который был представлен как часть Batch1 (шаг а)?Итак, я ищу повторное выполнение Batch2 после отправки кода один раз с использованием Batch1.Пакет 1 не будет запущен снова.Как я могу гарантировать, что фреймы данных пересчитываются, если я снова запускаю Batch2 (чтение данных и повторная обработка)?
Спасибо