結論
spark-submit
コマンドを実行する際に、--JOB_PARAM1 test1
のような形式で渡せます。
例えば、この公式ドキュメントのコマンドでジョブパラメータを付けるとすると、以下のようになります。
docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit amazon/aws-glue-libs:glue_libs_3.0.0_image_01 spark-submit /home/glue_user/workspace/src/$SCRIPT_FILE_NAME --JOB_PARAM1 test1 --JOB_PARAM2 test2
ちなみに
''、""でくくってもOK。
--JOB_PARAM1 'test1'
--JOB_PARAM1 "test1"
ただし、イコールで指定するのはNG。正しく認識されません。
--JOB_PARAM1=test1
Glueのローカル開発方法
以前はあまり情報がありませんでしたが、現在は公式ドキュメントにもわかりやすく実例で載ってますね。
.pyファイルを実行するだけでなく、Glueの環境が動くNotebookもローカルで実行可能です。
さらに、インタラクティブセッションをローカルから使える方法も公式ドキュメントにありました。こちらでも、Notebookをローカルで実行できそうです。
しかし、
インタラクティブセッションは、PyCharm、IntelliJ、VS Code などの IDE との統合を含め、Jupyter が統合するほぼすべてと統合できるオープンソースの Jupyter カーネルを提供します。これにより、ローカル環境でコードをオーサリングし、インタラクティブセッションのバックエンドでシームレスに実行できます。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/interactive-sessions-overview.html
とあり、インタラクティブセッションを使った場合はSparkの実行環境はバックエンド、つまりAWS側となります。そのため、Notebookはローカルでも、Glueのインタラクティブセッションの課金が発生するので注意です。