【问题标题】:google dataproc - image version 2.0.x how to downgrade the pyspark version to 3.0.1google dataproc - 图像版本 2.0.x 如何将 pyspark 版本降级到 3.0.1
【发布时间】:2021-02-08 19:52:44
【问题描述】:

在 Google Cloud 中使用 2.0.x 版 dataproc 映像,因为 delta 0.7.0 在此 dataproc 映像版本中可用。不过这个dataproc实例默认自带pyspark 3.1.1,Apache Spark 3.1.1还没有正式发布。所以目前还没有兼容 3.1 的 Delta Lake 版本,因此建议降级。

我已经尝试了以下,

pip install --force-reinstall pyspark==3.0.1 

在 dataproc 实例的主节点上以 root 用户身份执行上述命令,但是,当我检查 pyspark --version 时,它仍然显示 3.1.1

如何将默认的 pyspark 版本修复为 3.0.1?

【问题讨论】:

    标签: apache-spark pyspark google-cloud-dataproc delta-lake


    【解决方案1】:

    使用带有 Dataproc 2.0 的 Spark 3.0 的最简单方法是在 newer Dataproc 2.0 image versions 中固定使用 Spark 3.0 之前使用 Spark 3.0 的旧 Dataproc 2.0 映像版本 (2.0.0-RC22-debian10):

    gcloud dataproc clusters create $CLUSTER_NAME --image-version=2.0.0-RC22-debian10
    

    【讨论】:

      【解决方案2】:

      要使用 3.0.1 版本的 spark,您需要确保 Dataproc 集群中的主节点和工作节点在 /usr/lib/spark/jars 中有 spark-3.0.1 jar,而不是 3.1.1。

      有两种方法可以做到这一点:

      1. 将每个节点中的 3.0.1 jar 手动移动到 /usr/lib/spark/jars,并删除 3.1.1 的。在为所需版本的 pyspark 执行 pip install 后,您可以在 /.local/lib/python3.8/site-packages/pyspark/jars 中找到 spark jar。确保在此之后重新启动 spark:sudo systemctl restart spark*

      2. 您可以使用 dataproc 初始化操作 (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/init-actions?hl=en) 来执行相同的操作,这样您就不必对每个节点进行 ssh 并手动更改 jar。

      步骤:

      1. 将更新后的 Hadoop jar 上传到 GCS 文件夹,例如 gs:///lib-updates,与集群节点的 /usr/lib/ 目录结构相同。

      2. 编写一个初始化操作脚本,将更新从 GCS 同步到本地 /usr/lib/,然后重新启动 Hadoop 服务。将脚本上传到 GCS,例如 gs:///init-actions-update-libs.sh。

         #!/bin/bash
        
         set -o nounset
         set -o errexit
         set -o xtrace
         set -o pipefail
        
         # The GCS folder of lib updates.
        
         LIB_UPDATES=$(/usr/share/google/get_metadata_value attributes/lib-updates)
        
         # Sync updated libraries from $LIB_UPDATES to /usr/lib
        
         gsutil rsync -r -e $LIB_UPDATES /usr/lib/
        
         # Restart spark services
         service spark-* restart
        
      3. 使用 --initialization-actions $INIT_ACTIONS_UPDATE_LIBS 和 --metadata lib-updates=$LIB_UPDATES 创建一个集群。

      【讨论】:

        猜你喜欢
        • 2021-11-27
        • 2021-12-21
        • 1970-01-01
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        • 2018-03-07
        • 2013-05-10
        • 2018-04-11
        相关资源
        最近更新 更多