Co oznacza „Pominięcie etapu” w interfejsie internetowym Apache Spark?

88

Z mojego interfejsu użytkownika Spark. Co to znaczy pominąć?

wprowadź opis obrazu tutaj

Aravind Yarram
źródło

Odpowiedzi:

124

Zwykle oznacza to, że dane zostały pobrane z pamięci podręcznej i nie było potrzeby ponownego wykonywania danego etapu. Jest to zgodne z Twoim DAG, który pokazuje, że następny etap wymaga shuffling ( reduceByKey). Zawsze, gdy dochodzi do tasowania, Spark automatycznie buforuje wygenerowane dane :

Shuffle generuje również dużą liczbę plików pośrednich na dysku. Począwszy od Spark 1.3, te pliki są zachowywane, dopóki odpowiadające im RDD nie będą już używane i nie zostaną usunięte. Dzieje się tak, aby pliki losowe nie musiały być ponownie tworzone, jeśli pochodzenie zostanie ponownie obliczone.

zero323
źródło
23
Świetna odpowiedź. Jeśli chcesz dowiedzieć się sposób więcej o semantyce „pominięte” i „pending” etapów na interfejsie WWW, sprawdź github.com/apache/spark/pull/3009 , wniosek ciągnącego który pierwszy wprowadził te koncepcje. Ten PR jest również interesującą lekturą, jeśli jesteś ciekawy, jak pominięte / oczekujące etapy współdziałają z paskami postępu na poziomie stanowiska.
Josh Rosen
1
Jeśli śledzę poprawnie, Spark pomija te elementy, co oznacza, że ​​się nie zdarzają i można je razem usunąć z kodu? czy kod jest bardzo wydajny z pamięcią podręczną, więc zostaw go? @ zero323
SparkleGoat
1
@SparkleGoat No. Oznacza to, że te etapy zostały ocenione wcześniej i wynik jest dostępny bez ponownego wykonywania.
10465355 mówi Przywróć Monikę
kolejne pytanie, czy buforowanie i pomijanie etapów może sprawić, że dane wyjściowe będą inne?
SparkleGoat
1
@SparkleGoat, brak buforowania (i pomijanie z tego powodu) jest wewnętrzną optymalizacją iskry i nie zmienia w żaden sposób danych wyjściowych.
Ravi Sanwal