我正在本地运行(Docker桌面)的Kubernetes中提交Spark作业。我可以提交作业,并在屏幕上查看其最终输出。
但是,即使已完成,驱动程序和执行程序窗格仍处于RUNNING状态。
如docs中所述,用于将Spark作业提交到kubernetes的基本映像是Spark随附的映像。
这是我的spark-submit
命令的样子:
~/spark-2.4.3-bin-hadoop2.7/bin/spark-submit \
--master k8s://https://kubernetes.docker.internal:6443 \
--deploy-mode cluster \
--name my-spark-job \
--conf spark.kubernetes.container.image=my-spark-job \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.submission.waitAppCompletion=false \
local:///opt/spark/work-dir/my-spark-job.py
这是kubectl get pods
返回的结果:
NAME READY STATUS RESTARTS AGE
my-spark-job-1568669908677-driver 1/1 Running 0 11m
my-spark-job-1568669908677-exec-1 1/1 Running 0 10m
my-spark-job-1568669908677-exec-2 1/1 Running 0 10m
答案 0 :(得分:3)
弄清楚了。我忘记了stop
Spark上下文。我的脚本现在看起来像这样,完成后,驱动程序进入Completed
状态,并且驱动程序被删除。
sc = SparkContext()
sqlContext = SQLContext(sc)
# code
sc.stop()