在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?
2条答案
按热度按时间y1aodyip1#
使用spark3.0w/dataproc2.0最简单的方法是固定一个旧的dataproc2.0映像版本(
2.0.0-RC22-debian10
)在更新的dataproc 2.0映像版本中升级到spark 3.1之前使用spark 3.0的: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。
使用--initialization actions$init\u actions\u update\u libs和--metadata lib updates=$lib\u updates创建集群。