googledataproc-image版本2.0.x如何将pyspark版本降级到3.0.1

wwtsj6pe  于 2021-07-13  发布在  Spark
关注(0)|答案(2)|浏览(497)

在google云中使用dataproc映像版本2.0.x,因为delta 0.7.0在此dataproc映像版本中可用。然而,这个dataproc示例带有pyspark 3.1.1默认值,apachespark 3.1.1还没有正式发布。因此,没有与3.1兼容的delta lake版本,因此建议降级。
我试过下面的方法,

pip install --force-reinstall pyspark==3.0.1

但是,当我检查 pyspark --version 它仍然显示3.1.1
如何将默认的pyspark版本修复为3.0.1?

y1aodyip

y1aodyip1#

使用spark3.0w/dataproc2.0最简单的方法是固定一个旧的dataproc2.0映像版本( 2.0.0-RC22-debian10 )在更新的dataproc 2.0映像版本中升级到spark 3.1之前使用spark 3.0的:

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

1sbrub3j2#

要使用spark的3.0.1版本,您需要确保dataproc集群中的主节点和工作节点在/usr/lib/spark/jars中有spark-3.0.1 jars,而不是3.1.1 jars。
有两种方法可以做到这一点:
将每个节点中的3.0.1 jar手动移动到/usr/lib/spark/jars,然后删除3.1.1 jar。为所需版本的pyspark执行pip安装后,可以在/.local/lib/python3.8/site-packages/pyspark/jars中找到spark jar。确保在此之后重新启动spark:sudo systemctl restart spark*
可以使用dataproc init操作(https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/init-actions?hl=en)要执行与此相同的操作,您不必对每个节点使用ssh并手动更改jar。
步骤:
将更新后的hadoop jar上传到gcs文件夹,例如gs:///lib updates,它与集群节点的/usr/lib/目录具有相同的结构。
编写一个init actions脚本,将gcs的更新同步到local/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

使用--initialization actions$init\u actions\u update\u libs和--metadata lib updates=$lib\u updates创建集群。

相关问题