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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.