Der Grund, warum %code% mode nicht unterstützt wird, ist, dass %code% 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 %code% mode anstatt mit %code% übereinstimmt; Im %code% -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 %code% aufruft, um einen unabhängigen PySpark-Job zur Ausführung im %code% -Modus zu bündeln.
Zusammenfassend:
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