Spark集群,多个版本Python/Python Package管理

原创 2016年08月30日 14:34:01

进年来,越来越多的数据科学家、分析人员、数据工程师运用Python语言进行数据分析和机器学习。Spark在0.7版本开始支持Python语言(PySpark)。
相比于Scala/Java, Python语言更适合互动的探索性分析,拥有内置的图形化工具以及丰富的机器学习库。Scala/Java的优势在于平台独立,代码和第三方库易于打包到Jar文件,更好的执行效率。当我们使用PySpark时则会失去以上优势,尤其是在集群环境管理不同的Python版本和第三方库。

具体问题:

  1. 不同的数据分析人员/开发团队需要不同版本的Python版本执行PySpark。
  2. 同一Python版本下,需要安装多个Python库,甚至需要不同版本的库。

针对问题2的一个解决办法是将Python依赖库打包成*.egg文件,在运行pyspark或者spark-submit时使用–py-files加载egg文件。此解决方案的问题在于许多Python库都包含native code,编译时对平台依赖,并且对于一些复杂依赖的库(如Pandas),编译失败。
如果不使用*.egg文件,则需要安装不同Python版本极其所需库在集群中的每一台机器,然后在运行Spark时指定所需Python的路径。


解决方案

使用Anaconda管理多个Python环境在集群中的每一个节点
1. Anaconda 安装 https://www.continuum.io

wget http://repo.continuum.io/archive/Anaconda3-4.1.1-Linux-x86_64.sh
bash Anaconda3-4.1.1-Linux-x86_64.sh -b -p /opt/anaconda

(此安装包默认为python3.5, 注意anaconda在每个节点的安装路径需要一致)
2. 创建多个Anaconda Python环境
创建,每行命令最后的参数anaconda是指定安装所有anaconda python package

/opt/anaconda/bin/conda create -n py34 python=3.4 anaconda
/opt/anaconda/bin/conda create -n py27a python=2.7 anaconda

复制anaconda环境, 并在此环境中安装python thrift package

/opt/anaconda/bin/conda create -n py27b --clone py27a

使用指定的Python环境运行Spark
Client Mode: PYSPARK_PYTHON = /opt/anaconda/bin/conda/py27b/python
Cluster Mode: spark.yarn.appMasterEnv.PYSPARK_PYTHON = /opt/anaconda/bin/conda/py27b/python

设置Spark默认Python环境
修改spark-env.sh

if [ -z "${PYSPARK_PYTHON}" ]; then
export PYSPARK_PYTHON=/opt/anaconda3/bin/python
fi
版权声明:本文为博主原创文章,未经博主允许不得转载。

spark 集群运行python作业

spark集群运行python作业,pyspark
  • xiaolewennofollow
  • xiaolewennofollow
  • 2015年07月31日 16:22
  • 6562

使用docker安装部署Spark集群来训练CNN(含Python实例)

实验室有4台服务器(8个GPU/台),平日都只使用了其中的一个GPU,实在暴遣天物!于是决定使用docker安装部署Spark集群,将这些GPU都利用起来训练CNN。本文是博主含泪写出的踩坑总结,希望...
  • cyh24
  • cyh24
  • 2015年11月06日 15:03
  • 14365

Spark集群,多个版本Python/Python Package管理

文章转载自:http://blog.csdn.net/gongbi917/article/details/52369025 仅用于个人学习备忘收藏,转载请注明原文地址 进年来,越来越多的数...
  • github_38358734
  • github_38358734
  • 2017年12月16日 11:31
  • 42

使用 pyenv 管理多个版本 python 环境

随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv。以前一直使用的 virtualenv只能管理同一个 python 版本下第三方库的版本,但是对...
  • kongxx
  • kongxx
  • 2017年10月19日 09:16
  • 385

在ubuntu下pyenv管理python的多个版本

如何在ubuntu下管理python的多个版本。我这里使用的是一个叫pyenv的Python版本管理工具。   系统环境:ubuntu14.04LTS,系统默认的python版本为2.7,我这里想要再...
  • u011534057
  • u011534057
  • 2017年02月02日 15:56
  • 694

Mac OS 上用pyenv和pyenv-virtualenv管理多个Python多版本及虚拟环境

软件简介:pyenv 是一款特别好用的Python版本管理器,可以在同一台电脑上不同的目录里分别运行不同版本的Python, 并且互不影响,安装的包也互不影响。github项目地址:https://g...
  • liuchunming033
  • liuchunming033
  • 2017年10月25日 19:20
  • 424

使用 pyenv 管理多个python版本

使用 pyenv 管理多个python版本
  • blue0bird
  • blue0bird
  • 2017年10月02日 10:48
  • 64

使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计

写在前边的话:         本篇博客也是在做豆瓣电影数据的分析过程中,需要对影评信息和剧情摘要信息进行分析而写的一篇博客         以前学习Hadoop时,感觉做中文分词也没那么...
  • shuyun123456789
  • shuyun123456789
  • 2016年11月15日 19:14
  • 617

使用docker安装部署Spark集群来训练CNN(含Python实例)

实验室有4台服务器(8个GPU/台),平日都只使用了其中的一个GPU,实在暴遣天物!于是决定使用docker安装部署Spark集群,将这些GPU都利用起来训练CNN。本文是博主含泪写出的踩坑总结,希望...
  • cyh24
  • cyh24
  • 2015年11月06日 15:03
  • 14365

spark 集群运行python作业

spark集群运行python作业,pyspark
  • xiaolewennofollow
  • xiaolewennofollow
  • 2015年07月31日 16:22
  • 6562
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark集群,多个版本Python/Python Package管理
举报原因:
原因补充:

(最多只允许输入30个字)