W programie Apache Spark skąd wiemy, która część kodu zostanie wykonana w programie sterownika i która część kodu zostanie wykonana w węzłach roboczych?rozróżnić kod sterownika i kod roboczy w Apache Spark
Z poważaniem
W programie Apache Spark skąd wiemy, która część kodu zostanie wykonana w programie sterownika i która część kodu zostanie wykonana w węzłach roboczych?rozróżnić kod sterownika i kod roboczy w Apache Spark
Z poważaniem
To jest naprawdę bardzo proste. Wszystko, co dzieje się w zamknięciu stworzonym przez transformację, dzieje się na robotniku. Oznacza to, że jeśli coś zostanie przekazane wewnątrz map(...)
, , groupBy*(...)
, aggregateBy*(...)
jest wykonywane na pracownikach. Obejmuje odczytywanie danych z trwałej pamięci lub źródeł zdalnych.
Akcje takie jak count
, ,są zwykle wykonywane zarówno na maszynie, jak i na robotach. Podnoszenie ciężkich przedmiotów odbywa się równolegle przez pracowników, a niektóre końcowe kroki, takie jak zmniejszenie liczby wyjść otrzymywanych od pracowników, są wykonywane sekwencyjnie przez kierowcę.
Cała reszta, podobnie jak wyzwalanie akcji lub transformacji, odbywa się w sterowniku. W szczególności oznacza to każde działanie, które wymaga dostępu do SparkContext
. W PySpark oznacza to również komunikację z bramką Py4j.
Wszystkie zamknięcia przekazane jako argumenty dla metody JavaRDD/JavaPairRDD/similar i niektóre metody tych klas będą wykonywane przez węzły iskrzenia. Wszystko inne to kod sterownika.
Dziękuję! –