Apache spark 为什么';pyspark驱动程序是否将jar文件下载到本地存储?
我正在使用在Kubernetes上部署Spark 2.4.4。然而,我很确定这个问题是关于Spark本身的,而不是关于Kubernetes的部署 在将作业部署到kubernetes集群时,我包括几个文件,包括JAR、pyfiles和一个main。在spark-on-k8s中;这是通过配置文件完成的:Apache spark 为什么';pyspark驱动程序是否将jar文件下载到本地存储?,apache-spark,kubernetes,pyspark,Apache Spark,Kubernetes,Pyspark,我正在使用在Kubernetes上部署Spark 2.4.4。然而,我很确定这个问题是关于Spark本身的,而不是关于Kubernetes的部署 在将作业部署到kubernetes集群时,我包括几个文件,包括JAR、pyfiles和一个main。在spark-on-k8s中;这是通过配置文件完成的: spec: mainApplicationFile: "s3a://project-folder/jobs/test/db_read_k8.py" deps: jars:
spec:
mainApplicationFile: "s3a://project-folder/jobs/test/db_read_k8.py"
deps:
jars:
- "s3a://project-folder/jars/mysql-connector-java-8.0.17.jar"
pyFiles:
- "s3a://project-folder/pyfiles/pyspark_jdbc.zip"
这相当于
spark-submit \
--jars s3a://project-folder/jars/mysql-connector-java-8.0.17.jar \
--py-files s3a://project-folder/pyfiles/pyspark_jdbc.zip \
s3a://project-folder/jobs/test/db_read_k8.py
在spark-on-k8s中,有一个sparkapplication
kubernetes吊舱管理提交的spark作业,该吊舱spark提交给一个驱动吊舱(然后与工作吊舱交互)。我的问题发生在驾驶舱上。一旦驱动程序接收到spark submit
命令,它就开始工作,并按预期从AWS S3中提取所需的文件。除此之外,它不会拉取jar文件:
spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added JAR s3a://project-folder/jars/mysql-connector-java-8.0.17.jar at s3a://sezzle-spark/jars/mysql-connector-java-8.0.17.jar with timestamp 1572973279830
spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added file s3a://project-folder/jobs/test/db_read_k8.py at s3a://sezzle-spark/jobs/test/db_read_k8.py with timestamp 1572973279872
spark-kubernetes-driver 19/11/05 17:01:19 INFO Utils: Fetching s3a://project-folder/jobs/test/db_read_k8.py to /var/data/spark-f54f76a6-8f2b-4bd5-9644-c406aecac2dd/spark-42e3cd23-55c5-4099-a6af-455efb5dc4f2/userFiles-ae47c908-d0f0-4ff5-aee6-4dadc5c9b95f/fetchFileTemp1013256051456720708.tmp
spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added file s3a://project-folder/pyfiles/pyspark_jdbc.zip at s3a://sezzle-spark/pyfiles/pyspark_jdbc.zip with timestamp 1572973279962
spark-kubernetes-driver 19/11/05 17:01:20 INFO Utils: Fetching s3a://project-folder/pyfiles/pyspark_jdbc.zip to /var/data/spark-f54f76a6-8f2b-4bd5-9644-c406aecac2dd/spark-42e3cd23-55c5-4099-a6af-455efb5dc4f2/userFiles-ae47c908-d0f0-4ff5-aee6-4dadc5c9b95f/fetchFileTemp6740168219531159007.tmp
所有三个必需的文件都被“添加”,但只有主文件和py文件被“获取”;它只是不能在本地下载。当然,这会使我的应用程序崩溃,因为mysql驱动程序不在类路径中
为什么spark不像pyfiles和python main那样将jar文件下载到驱动程序的本地文件系统?PySpark的依赖关系管理有点不清楚,也没有足够的文档记录 如果您的问题是只添加
.jar
,我建议您使用--packages…
(spark操作符应该有类似的选项)
希望对你有用