【问题标题】:Why doesn't the pyspark driver download jar files to local storage?为什么pyspark驱动不下载jar文件到本地存储?
【发布时间】:2019-11-05 18:03:13
【问题描述】:

我正在使用spark-on-k8s-operator 在 Kubernetes 上部署 Spark 2.4.4。但是,我很确定这个问题是关于 Spark 本身的,而不是关于它的 Kubernetes 部署。

当我将作业部署到 kubernetes 集群时,我包含了几个文件,包括 jars、pyfiles 和 main.在 spark-on-k8s 中;这是通过配置文件完成的:

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 pod 管理提交的 spark 作业,并且该 pod spark-submits 到驱动程序 pod(然后与工作程序 pod 交互)。我的问题发生在驱动程序吊舱上。一旦驱动程序收到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

所有三个必需的文件都被“添加”了,但只有主文件和 pyfile 被“获取”。查看驱动程序窗格,我在任何地方都找不到 jar 文件;它只是没有在本地下载。当然,这会使我的应用程序崩溃,因为 mysql 驱动程序不在类路径中。

为什么不像 pyfiles 和 python main 那样将 jar 文件下载到驱动程序的本地文件系统?

【问题讨论】:

    标签: apache-spark kubernetes pyspark


    【解决方案1】:

    PySpark 的依赖管理有点不清楚,也没有足够的文档记录。

    如果您的问题只是添加 .jar,我建议您改用 --packages ...(spark-operator 应该有类似的选项)。

    希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多