У нас есть большой набор данных, состоящий из нескольких миллионов записей, а затем обрабатывающий подмножество в последовательности преобразований и действий искр.Каждое подмножество проходит через один и тот же набор преобразований и действий.Первый шаг - получить данные и сохранить их в памяти, затем выполнить несколько операций, а затем очистить кэш.Это повторяется почти 2000 раз.После того, как это повторилось 200-300 раз, мы наблюдаем, что число активных стадий почти 3000 и продолжает расти.Мы ожидаем, что с каждым Unpersist соответствующие этапы должны исчезнуть, но все же этапы останутся.
В поисках решения для минимизации активных этапов, чтобы задания могли быть выполнены.В настоящее время мы не можем обработать его до конца из-за растущих активных стадий.
Logic is somewhat as below:
SubRoutine1:
Received a listOfCustomer
Build a dataframe for the listOfCustomer based on certain common condition/criteria.
cache the dataframe
SubRoutine2:
Received listOfCustomer
For each customer from listOfCustomer:
Get the cached dataframe
apply few transformations and actions for this customer on this dataframe
save the final result in some datastore
if (customerIndex % 200 = 0) then refresh cache by calling SubRoutine1 again