Google dataproC语言 image 2.0版本.X如何将pyspark版本降级到3.0.1



使用dataproc image 2.0版本。由于delta 0.7.0在这个dataproc映像版本中可用。但是,这个dataproc实例是pyspark 3.1.1默认的,Apache Spark 3.1.1还没有正式发布。因此Delta Lake没有与3.1兼容的版本,因此建议降级。

我已经试过了,

pip install --force-reinstall pyspark==3.0.1 

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

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

使用Spark 3.0 w/Dataproc 2.0的最简单方法是固定使用旧的Dataproc 2.0映像版本(2.0.0-RC22-debian10),该版本使用Spark 3.0,然后在更新的Dataproc 2.0映像版本中升级到Spark 3.1:

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

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

有两种方法:

  1. 将每个节点中的3.0.1 jar手动移动到/usr/lib/spark/jars,并删除3.1.1 jar。在对所需版本的pyspark执行pip安装后,您可以在/.local/lib/python3.8/site-packages/pyspark/jars中找到spark jar。sudo systemctl restart spark*

  2. 您可以使用dataproc init actions (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. 写一个init actions脚本,从GCS同步更新到本地/usr/lib/,然后重启Hadoop服务。将脚本上传到GCS,例如:gs:///init-actions-update-lib .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创建集群

最新更新