pythonクラスターでsparkコードを実行するためにspark-submit
を使用しようとしています。
通常、以下のようなpythonコードでspark-submit
を実行します。
# Run a Python application on a cluster
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
my_python_code.py \
1000
しかし、いくつかの引数を渡してmy_python_code.py
を実行したい引数を渡すスマートな方法はありますか?
はい:これをargs.pyというファイルに入れます
#import sys
print sys.argv
走ったら
spark-submit args.py a b c d e
表示されます:
['/spark/args.py', 'a', 'b', 'c', 'd', 'e']
たとえ sys.argv
は良い解決策ですが、PySparkジョブで行コマンド引数を処理するこのより適切な方法が今でも好まれています。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--ngrams", help="some useful description.")
args = parser.parse_args()
if args.ngrams:
ngrams = args.ngrams
このようにして、次のようにジョブを起動できます。
spark-submit job.py --ngrams 3
argparse
モジュールの詳細については、 Argparseチュートリアル を参照してください。
ああ、それは可能です。 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