2015-08-20 4 views
7

Ich übergebe einen Spark-Auftrag im Cluster-Bereitstellungsmodus. Ich erhalte die Einreichungs-ID in meinem Code. Um Spark Rest Api zu verwenden, benötigen wir applicationId. Wie können wir also Anwendungs-ID via Submission ID erhalten programmatischwie Anwendungs-ID von Übermittlungs-ID oder Treiber-ID programmgesteuert erhalten

+0

Mögliches Duplikat von [So extrahieren Sie die Anwendungs-ID aus dem PySpark-Kontext] (http://stackoverflow.com/questions/30983226/how-to-extract-application-id-from-the-pyspark-context) – Bacon

+0

Wie? Erhalten Sie die Submission ID im Programm? Ich habe App-ID im Programm und brauche die Submission ID. –

Antwort

-1

i auch gleiche Problem haben, ich glaube,

Web-UI (http://spark_hostIp:port/8080) Crawlen ~

bekommen ApplicationID

eine der Möglichkeiten

+0

Dieser Beitrag ist kein tatsächlicher Versuch, die Frage zu beantworten. Bitte beachten Sie [StackOverflow funktioniert nicht wie ein Diskussionsforum] (http://stackoverflow.com/tour), es ist eine Q & A-Seite, wo jeder Beitrag entweder eine Frage oder eine Antwort auf eine Frage ist. Beiträge können auch [Kommentare] (http://stackoverflow.com/help/privileges/comment) - kleine Sätze wie diesen - haben, die verwendet werden können, um einen Autor zu kritisieren oder um Klärung zu bitten. Dies sollte entweder ein Kommentar oder eine [neue Frage] sein (http://stackoverflow.com/questions/ask) –

0

Um diese Frage zu beantworten, wird angenommen, dass bekannt ist, dass die Zertifikats-ID mit der folgenden Funktion erhalten werden kann:

scala> spark.sparkContext.applicationId 

Wenn Sie wollen, ist es ein wenig anders. Über die Rest-API ist es möglich, Befehle zu senden. Zum Beispiel wie im folgenden nützlichen Tutorial über die Apache REST API: http://arturmkrtchyan.com/apache-spark-hidden-rest-api Eine andere Lösung ist es, es selbst zu programmieren. Sie können einen Funken einreichen in der folgenden Art an:

$SPARK_HOME/bin/spark-submit \ 
--class org.apache.spark.examples.SparkPi \ 
--master spark://my-cluster:7077 \ 
--deploy-mode cluster \ 
/path/to/examples.jar 1000 

Hier im Hintergrund des Terminals Sie die Protokolldatei erzeugt wird, sehen sollte. In der Protokolldatei befindet sich die Anwendungs-ID (App_ID). Die $SPARK_HOME ist hier die Umgebungsvariable, die zu dem Ordner führt, in dem sich der Funke befindet.

Mit zum Beispiel Python ist es möglich, die App_ID in dem unten beschriebenen Code zu erhalten. Zuerst erstellen wir eine Liste, um den Befehl mit Python subprocess Modul zu senden. Das Unterprozessmodul hat die Möglichkeit, eine PIPE zu erstellen, aus der Sie die Protokollinformationen extrahieren können, anstatt die Standardoption von Spark zu verwenden, um sie an das Terminal zu senden. Stellen Sie sicher, nach dem Popen communicate() zu verwenden, um das Warten auf das Betriebssystem zu verhindern. Dann teilen Sie es in Linien und kratzen Sie es durch, um die App_ID zu finden. Das Beispiel finden Sie unten werden können:

submitSparkList=['$SPARK_HOME/bin/spark-submit','--class','org.apache.spark.examples.SparkPi','--master spark://my-cluster:7077','--deploy-mode cluster','/path/to/examples.py','1000'] 
sparkCommand=subprocess.Popen(submitSparkList,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
stdout, stderr = sparkCommand.communicate() 
stderr=stderr.splitlines() 
for line in stderr:  
    if "Connected to Spark cluster" in line: #this is the first line from the rest API that contains the ID. Scrape through the logs to find it. 
     app_ID_index=line.find('app-') 
     app_ID=line[app_ID_index:] #this gives the app_ID 
     print('The app ID is ' + app_ID) 

Nach dem Python führen diese enthält eine Warnung, wenn nicht kommunizieren() -Funktion: https://docs.python.org/2/library/subprocess.html

Diese Warnung wird Deadlock, wenn stdout = PIPE und/oder stderr = PIPE und der untergeordnete Prozess generieren genügend Output für eine Pipe, sodass sie blockiert, während sie darauf wartet, dass der OS-Pipe-Puffer mehr Daten akzeptiert. Verwenden Sie communicate(), um dies zu vermeiden.

Verwandte Themen