温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么让CDSW的PySpark自动适配Python版本

发布时间:2021-10-11 18:01:19 来源:亿速云 阅读:361 作者:柒染 栏目:大数据

今天就跟大家聊聊有关怎么让CDSW的PySpark自动适配Python版本,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。


   

在CDH集群中Spark2的Python环境默认为Python2,CDSW在启动Session时可以选择Engine Kernel版本Python2或者Python3。当选择Python3启动Session时,开发PySpark作业在运行时会报“Python in worker has different version 2.7 than that in driver 3.6, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set”,为解决Python版本适配的问题,需要进行如下调整来使我们的应用自动的适配Python版本。

集群部署多个Python版本    

   

基于CDH提供的Anaconda Parcels包来安装Python,通过在CDH集群同时安装两个Python版本的Parcel包来解决多个版本的问题。如果需要在Spark中默认的支持Python2或者Python3版本则激活相应版本的Parcel即可,在我的集群默认激活的为Python2版本的Parcel包,在接下来的操作主要介绍Python3的环境准备。

怎么让CDSW的PySpark自动适配Python版本

Spark2默认使用的Python2环境变量

怎么让CDSW的PySpark自动适配Python版本

1.Python2版本的Anaconda下载地址如下:

https://repo.anaconda.com/pkgs/misc/parcels/Anaconda-2019.07-el7.parcel
https://repo.anaconda.com/pkgs/misc/parcels/Anaconda-2019.07-el7.parcel.sha
https://repo.anaconda.com/pkgs/misc/parcels/manifest.json

2.Python3版本的Anaconda下载地址如下:

https://repo.anaconda.com/pkgs/misc/parcels/archive/Anaconda-5.1.0.1-el7.parcel
https://repo.anaconda.com/pkgs/misc/parcels/archive/Anaconda-5.1.0.1-el7.parcel.sha
https://repo.anaconda.com/pkgs/misc/parcels/archive/manifest.json

3.将下载好的parcel包部署到集群的私有HTTP服务上

怎么让CDSW的PySpark自动适配Python版本

4.使用管理员账号登录Cloudera Manager进入Parcel包管理界面配置Anaconda地址

怎么让CDSW的PySpark自动适配Python版本

5.完成Parcel地址配置后完成对应版本Parcel包的下载分配即可

怎么让CDSW的PySpark自动适配Python版本

上述操作不需要激活,在不激活的情况下PySpark默认使用的Python2环境,如果激活则使用的是Python3环境。

6.确认集群所有节点已存在Python2和Python3的环境

怎么让CDSW的PySpark自动适配Python版本

CDSW自动为Spark适配Python版本    

   

为了能让我们的Pyspark程序代码自动适配到不同版本的Python,需要在我们的Spark代码初始化之前进行环境的初始化,在代码运行前增加如下代码实现适配不同版本的Python。

import os
py_environ=os.environ['CONDA_DEFAULT_ENV']
if py_environ=='python2.7':
  os.environ['PYSPARK_PYTHON'] = '/opt/cloudera/parcels/Anaconda/bin/python'
else:
  os.environ['PYSPARK_PYTHON'] = '/opt/cloudera/parcels/Anaconda-5.1.0.1/bin/python'

怎么让CDSW的PySpark自动适配Python版本

验证程序自动适配Python版本    

   

1.选择Python2环境启动Session

怎么让CDSW的PySpark自动适配Python版本

2.运行PySpark作业测试正常运行

怎么让CDSW的PySpark自动适配Python版本

3.选择Python3环境启动Session

怎么让CDSW的PySpark自动适配Python版本

4.运行PySpark作业测试正常运行

怎么让CDSW的PySpark自动适配Python版本

总结    

在集群中同时部署多个版本的Python,通过在Pyspark代码中使用Python命令动态的指定PYSPARK_PYTHON为我们需要的Python环境即可。

看完上述内容,你们对怎么让CDSW的PySpark自动适配Python版本有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI