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

文章转载自:http://blog.csdn.net/gongbi917/article/details/52369025

仅用于个人学习备忘收藏,转载请注明原文地址

进年来,越来越多的数据科学家、分析人员、数据工程师运用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
  • 1
  • 2

(此安装包默认为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
  • 1
  • 2

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

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

使用指定的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络流24题】【LOJ6224】深海机器人问题(最大费用最大流)

problem 给定一个n*m的网格,每条边上有一个权值给定每个机器人的出发位置和目标位置求权值最大solution 拆边,每条边拆成2条,第一条容量1,费用c[i],第二条容量inf,费用0;建超级源汇(s到每个出发…

Oracle创建表空间、用户、分配权限、导出、导入数据

文章转载:https://segmentfault.com/a/1190000006704150 仅用于个人学习、收藏自查,谢谢原作者。 以系统管理员登录,命令:sqlplus / as sysdba #首先需要 su - oracle 进入到oracle用户下 一、分为四步 /第1步:创…

函数简介

一、函数 函数就是一个功能,一个方法,简化代码。#一个函数只做一件事#重复的代码就是低级的#实现同样的功能,代码越少越好 函数必须得调用才能执行。 1、函数的简单介绍,如下 1 def say(name):# 函数,形参,…

ORA-65096: 公用用户名或角色名无效引发的思考

解决方式: alter session set "_ORACLE_SCRIPT"true; alter session set containerPDBORCL;原因:查官方文档得知“试图创建一个通用用户,必需要用C##或者c##开头”,这时候心里会有疑问,什么是common user&am…

VS封装给Unity使用的DLL

首先: 注意两点,一个是选择3.5,Unity最高支持到3.5 然后要选择第二个FrameWork类库 第一个会报错 然后导入Unity dll 我Unity安装在F:\AppLicationWorkSpace\Unity5.6.2\Unity\Editor\Data\Managed 用哪个导入哪个 然后生成 Ok 把生成的DLL放到Unity里就可以使用了 继续写…

ftp与sftp及sftp和scp的区别

FTP VS SFTP FTP是文件传输协议。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到FTP服务器上,其他人通过FTP客户端程序来下载所需要的文件。 FTP进行文件传输需要通过端口进行。一般所需端口为: 1. 控制链路—T…

Kong API Gateway部署手册----安装

文章转载:http://www.nxops.cn/post/97.html

Linux系统下面crontab选择默认编译器

crontab修改默认编辑器crontab默认编辑器为nano.修改crontab默认编辑器为vi或者其他的编辑器。法一:export EDITOR"/usr/bin/vim" ; crontab -e法二:(一般我用这方法,简单方便,选3)执行命令&…

hawq state 报错: the database is down, but Ambari shows all hawq services as being

此问题官方有给出解决方案:https://discuss.pivotal.io/hc/en-us/articles/221826748-Pivotal-HDB-state-indicates-the-database-is-down-but-Ambari-shows-all-Pivotal-HDB-services-as-being-up Environment ProductVersionPivotal HDB (HAWQ)2.x Symptom Piv…

OpenLayer学习之矢量地图

一、首先了解下矢量地图和栅格地图 矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,矢量地图放大和缩小不会失真(图片你要是放大一定程度明显可以看出一个一个小格→栅格地图的缺点)。为…

Extra Data after Last Expected Column:hawq建外表load数据报错

背景:使用sqoop import 才oracle抽数据入HDFS后,通过pxf建立hawq外表,查询数据报错 解决思路:1、从报错上看应该是数据源分割后字段数比目标表字段多,且pgadmin3里报错还出现源数据异常的一条记录,去源头o…

上下文信息 RpcContext

上下文中存放的是当前调用过程中所需的环境信息。所有配置信息都将转换为 URL 的参数,参见 schema 配置参考手册 中的对应URL参数一列。 RpcContext 是一个 ThreadLocal 的临时状态记录器,当接收到 RPC 请求,或发起 RPC 请求时,Rp…

new malloc

https://blog.csdn.net/happyxieqiang/article/details/50775847 0. 属性 new/delete是C关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。 1. 参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类…

pip install scrpy 报错: command 'gcc' failed with exit status 1

报错如下: copying src/twisted/words/xish/xpathparser.g -> build/lib.linux-x86_64-2.7/twisted/words/xish running build_ext building twisted.test.raiser extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src cr…

Codeforces 990E Post Lamps 【暴力】【贪心】

虽然只是10^6的数据量,但用cin会tle。一直知道cin常数大,但没想到会是10^2这个级别。 我们枚举每个power的lamp,然后对每个power用平均logn的代价去求它的cost,最后取最小值 对于每个power,我们从左往右地去照亮整个区…

[Luogu 2486] SDOI2011 染色

[Luogu 2486] SDOI2011 染色 树剖水题&#xff0c;线段树维护。 详细题解不写了。 我只想说我写的线段树又变漂亮了qwq #include <algorithm> #include <cstdio> #include <cstring> const int MAXN100010; int n,m; class HLD {private:bool vis[MAXN];int …

完全卸载HDP和Ambari

文章转载自&#xff1a;https://imaidata.github.io/blog/uninstall_hdp_ambari/ 用于个人学习、备查&#xff0c;转载请注明原作者。 简介&#xff1a; 在不需要重装操作系统的情况下完全卸载HDP&#xff0c;并准备好自动安装HDP2.6的环境。 文章&#xff1a; 升级HDP失败…

HBase 配置详解

文章转载自&#xff1a;http://blog.csdn.net/ningxuezhu/article/details/50547970 仅用于个人学习&#xff0c;收藏&#xff0c;作为资料备查&#xff0c;如需转载请注明原作者。 该文档是用hbase默认配置文件生成的&#xff0c;文件源是hbase-default.xml hbase.rootdir …

文件拷贝(字符、字节)

1.字节流byte&#xff1a;读入到字节数组后&#xff0c;返回一个长度len&#xff0c;如果没有读到数据&#xff0c;len-1 2.字符流char&#xff1a;同样是-1 3.代码生成器&#xff1a;null 一行一行地读 4.键盘录入&#xff0c;写入文件 5.构造器&#xff0c;追加用true 6.类…

HBae找不到协处理器导致RegionServer全部挂掉

一、问题背景&#xff1a; 跟兄弟单位公用一个大数据集群&#xff0c;通过Dataspace结合Kerberos控制数据的访问&#xff0c;我们生产环境中用到的OLAP工具Kylin&#xff0c;在升级Kylin的过程中&#xff0c;由于删除了旧的协处理器&#xff0c;导致原来数据继续去寻找目标协处…