Я могу поделиться некоторыми своими опытами по использованию Jenkins для развертывания pyspark в GCP Dataproc.Есть три шага, которые вам нужно обработать:
- Используйте Jenkins для запуска сценария оболочки для создания искрового кластера dataproc (в вашем случае это emr-spark-submit-step )
Настройте вашу библиотеку Python в Spark Cluster двумя способами:
2-1.Используйте пользовательский образ для установки conda с зависимостью lib.
2-2.Заархивируйте свою библиотеку зависимостей Python и загрузите ее на s3 и назначьте --pyfiles
Использование Jenkins отправляет вам задание pyspark
Ниже приведен примерсценарий:
#!/bin/bash
MASTER="spark://<master ip>:7077"
NAME="sample-pyspark"
PY_FILE="jobs.zip"
CMD="main.py --job sampleTask \
--job-args profile=gcp"
SPARK_SUBMIT=$(which spark-submit)
export PYSPARK_PYTHON=/opt/pvmax-ml/miniconda3/envs/pyspark/bin/python
SUBMIT_COMMAND="$SPARK_SUBMIT \
--master $MASTER \
--deploy-mode client \
--driver-memory 4g \
--executor-memory 4g \
--executor-cores 2 \
--conf spark.app.name=$NAME \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.network.timeout=120s \
--conf spark.sql.broadcastTimeout=7200 \
--conf spark.executor.heartbeatInterval=60 \
--conf spark.rdd.compress=true \
--conf spark.driver.maxResultSize=8g \
--conf spark.rpc.message.maxSize=256 \
--conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8" \
--py-files $PY_FILE \
$CMD
"
echo "$SUBMIT_COMMAND"
eval "$SUBMIT_COMMAND"