2015-08-26 2 views
13

Ich versuche spark-submit zu verwenden, um meinen Python-Code im Spark-Cluster auszuführen.Kann ich dem Python-Code Argumente hinzufügen, wenn ich einen Spark-Job einreiche?

Im Allgemeinen führen wir spark-submit mit Python-Code wie unten.

# Run a Python application on a cluster 
./bin/spark-submit \ 
    --master spark://207.184.161.138:7077 \ 
    my_python_code.py \ 
    1000 

Aber Ich will my_python_code.py laufen durch mehrere Argumente zu übergeben Gibt es intelligente Art und Weise Argumente zu übergeben?

Antwort

16

Ja: Setzen Sie diese in einer Datei namens args.py

#import sys 
print sys.argv 

Wenn Sie

spark-submit args.py a b c d e 

laufen Sie sehen:

['/spark/args.py', 'a', 'b', 'c', 'd', 'e'] 
1

Ah, es ist möglich. http://caen.github.io/hadoop/user-spark.html

spark-submit \ 
    --master yarn-client \ # Run this as a Hadoop job 
    --queue <your_queue> \ # Run on your_queue 
    --num-executors 10 \  # Run with a certain number of executors, for example 10 
    --executor-memory 12g \ # Specify each executor's memory, for example 12GB 
    --executor-cores 2 \  # Specify each executor's amount of CPUs, for example 2 
    job.py ngrams/input ngrams/output 
11

Auch sys.argv ist eine gelungene Lösung, ziehe ich diese richtige Art und Weise Zeilenbefehl args in meinem Spark-Jobs zu behandeln:

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("--ngrams", help="some useful description.") 
args = parser.parse_args() 
if args.ngrams: 
    ngrams = args.ngrams 

Dann starten Sie Ihren Job, wie folgend:

spark-submit job.py --ngrams 3 

Mehr Informationen über argparse Modul kann gefunden werden in Argparse Tutorial

Verwandte Themen