J'essaie d'utiliser spark-submit
pour exécuter mon code python dans le cluster spark.
En général, nous exécutons spark-submit
avec python comme ci-dessous.
# Run a Python application on a cluster
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
my_python_code.py \
1000
Mais je veux courir my_python_code.py
en passant plusieurs arguments Existe-t-il un moyen intelligent de passer des arguments?
Oui: Mettez ceci dans un fichier appelé args.py
#import sys
print sys.argv
Si vous courez
spark-submit args.py a b c d e
Tu verras:
['/spark/args.py', 'a', 'b', 'c', 'd', 'e']
Même si sys.argv
est une bonne solution, je préfère toujours cette manière plus appropriée de gérer les arguments de commande de ligne dans mes travaux PySpark:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--ngrams", help="some useful description.")
args = parser.parse_args()
if args.ngrams:
ngrams = args.ngrams
De cette façon, vous pouvez lancer votre travail comme suit:
spark-submit job.py --ngrams 3
Plus d'informations sur le module argparse
se trouvent dans Argparse Tutorial
Ah, c'est possible. 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