Gibt es eine Möglichkeit, pyspark-Skripte mit dem Garn-Cluster-Modus auszuführen, ohne das Spark-Submit-Skript zu verwenden? Ich brauche es auf diese Weise, weil ich diesen Code in eine Django Web App integrieren werde.
Wenn ich versuche, irgendein Skript im Garn-Cluster-Modus auszuführen, habe ich den folgenden Fehler:
%Vor%Ich erstelle den sparkContext folgendermaßen:
%Vor%Danke
Der Grund, warum yarn-cluster
mode nicht unterstützt wird, ist, dass yarn-cluster
das Bootstrapping des Treiberprogramms selbst (z. B. das Programm, das einen SparkContext aufruft) auf einen YARN-Container aufruft. Ausgehend von Ihrer Aussage über das Senden von einer Django-Webanwendung klingt es so, als wolle man den Python-Code, der den SparkContext enthält, in die Web-App selbst einbetten, anstatt den Treibercode an einen YARN-Container zu senden, der dann einen separaten Spark-Job handhabt .
Dies bedeutet, dass Ihr Fall am ehesten mit yarn-client
mode anstatt mit yarn-cluster
übereinstimmt; Im yarn-client
-Modus können Sie Ihren SparkContext-Code an beliebiger Stelle (wie in Ihrer Web-App) ausführen, während er mit YARN über die tatsächlichen Mechanismen laufender Jobs spricht.
Wenn Sie einen speicherinternen Status zwischen Ihrer Webanwendung und Ihrem Spark-Code teilen, bedeutet dies grundsätzlich, dass Sie den Spark-Teil nicht abtrennen können, um ihn in einem YARN-Container auszuführen, was% co_de ist % versucht zu tun. Wenn Sie keinen Status teilen, können Sie einfach einen Subprozess aufrufen, der tatsächlich yarn-cluster
aufruft, um einen unabhängigen PySpark-Job zur Ausführung im spark-submit
-Modus zu bündeln.
Zusammenfassend:
yarn-cluster
mode verwenden: SparkConf (). setMaster ("Garn-Client") yarn-client
tatsächlich realisierbar ist, können Sie einen Python- Subprozess yarn-cluster
spark-submit
mode tatsächlich aufzurufen. Tags und Links apache-spark yarn pyspark