如何使用spark-submit在Kubernetes(minikube)上提交PySpark作业



我的笔记本电脑上本地有一个PySpark作业。如果我想使用spark-submit在我的minikube集群上提交它,你知道如何传递python文件吗?

我正在使用以下命令,但它不起作用

./spark-submit 
--master k8s://https://192.168.64.6:8443 
--deploy-mode cluster 
--name amazon-data-review 
--conf spark.kubernetes.namespace=jupyter 
--conf spark.executor.instances=1 
--conf spark.kubernetes.driver.limit.cores=1 
--conf spark.executor.cores=1 
--conf spark.executor.memory=500m 
--conf spark.kubernetes.container.image=prateek/spark-ubuntu-2.4.5 
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark 
--conf spark.kubernetes.container.image.pullPolicy=Always 
--conf spark.kubernetes.container.image.pullSecrets=dockerlogin 
--conf spark.eventLog.enabled=true 
--conf spark.eventLog.dir=s3a://prateek/spark-hs/ 
--conf spark.hadoop.fs.s3a.access.key=xxxxx 
--conf spark.hadoop.fs.s3a.secret.key=xxxxx 
--conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem 
--conf spark.hadoop.fs.s3a.fast.upload=true 
/Users/prateek/apache-spark/amazon_data_review.py

获取以下错误-

python3: can't open file '/Users/prateek/apache-spark/amazon_data_review.py': [Errno 2] No such file or directory

是否需要将文件保存在Docker镜像本身中。我们不能把它放在笔记本电脑上本地运行吗

Kubernetes上的Spark不支持使用spark-submit提交本地存储的文件。

要使其在集群模式下工作,可以做的是在prateek/spark-ubuntu-2.4.5的基础上构建Spark Docker镜像,并在其中放入amazon_data_review.py(例如使用DockerCOPY /Users/prateek/apache-spark/amazon_data_review.py /amazon_data_review.py语句(。

然后使用local://文件系统在spark-submit命令中引用它,例如:

spark-submit 
--master ... 
--conf ... 
...
local:///amazon_data_review.py

另一种选择是将该文件存储在类似http(s)://hdfs://的可访问位置。

问题已经解决。以客户端模式运行有助于运行

--部署模式客户端

最新更新