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

spark-python版本依赖与三方模块方案 spark-python版本依赖与三方模块方案 1. 背景 公司有统一的spark大数据集群,但spark用的python版本是python2.7,项目组这边都是用python3.5,甚至有些项目用的是python3.6,对某些第三方包,有些项目用到pandas0.18,有些是pandas0.23等。相信这个问题用python的同学都遇到过,就是python的版本管理和第三包版本管理问题,... 阅读详情

文章转载自:http://blog.youkuaiyun.com/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

pyspark入门 中文官方文档 pyspark入门 阅读详情

相关推荐

Spark环境搭建避坑指南:JDK/Scala/Hadoop版本精准匹配

Apache Spark并非即装即用的单机工具,而是一个深度耦合JVM生态的分布式计算引擎。其稳定运行依赖于JDK版本兼容性、Scala运行时一致性、Hadoop二进制ABI匹配及本地资源精准配置等底层原理。技术价值在于规避NoClassDefFoundError、线程创建失败、文件系统不支持等高频故障,保障ETL调试、SQL开发与实时流任务的可复现性。典型应用场景包括金融风控离线分析、电商推荐特征工程及IoT时序数据本地验证。本文聚焦Spark环境搭建这一基础但极易出错的关键环节,深入解析JDK版本匹配与

weixin_30256901的博客 389

spark3.3.4 上使用 pyspark 跑 python 任务版本不一致问题解决

如果是使用 mlflow 包管理的任务,除了 driver 和 executor 上 python 版本保持一致,训练模型用的 python 版本也尽量匹配 pyspark 的版本要求,否则可能出现兼容性问题。这也就是说,如果你要跑 python 任务,你的 driver 和 worker 侧的 python 版本不能低于 3.7 版本,最小是 3.7,否则就会出现上面描述的异常。

三劫散仙 1732

Spark本地开发环境六步搭建:JDK/Scala/Hadoop/PySpark/IDEA/sbt全链路配置

Apache Spark 是一个基于 JVM 的分布式计算框架,其本地开发环境本质是 Java 生态、Scala 编译体系与 Hadoop 兼容层的精密协同。理解 Spark 运行原理需从 JVM 依赖机制出发——JDK 版本决定类加载兼容性,Scala 版本绑定二进制接口(如 _2.12 后缀),而 Hadoop 并非仅用于分布式存储,更是 Spark 初始化时硬依赖的配置与类库底座。这种强版本耦合性直接决定了开发效率与调试成本。技术价值在于构建可复现、可验证、可回溯的确定性环境,支撑从单机 local

culh2177的博客 617

Spark集群 Python Package管理

具体问题: 不同的数据分析人员/开发团队需要不同版本的Python版本执行PySpark。 同一Python版本下,需要安装多个Python库,甚至需要不同版本的库。 针对问题2的一个解决办法是将Python依赖库打包成*.egg文件,在运行pyspark或者spark-submit时使用–py-files加载egg文件。此解决方案的问题在于许多Python库都包含nati...

anqiu4023的博客 169

Spark Java版WordCount实战:从pom.xml到JVM调优的全链路解析

Word Count作为分布式计算的入门范式,本质是理解RDD、Shuffle与序列化机制的实践入口。其底层依托JVM内存模型与Java编译生态,涉及Scala二进制兼容性、Hadoop客户端集成、Lombok注解处理等关键环节。技术价值在于以轻量任务暴露集群环境一致性(如JDK版本对齐)、资源调度瓶颈(Executor内存与GC行为)及构建链路风险(Maven依赖冲突)。典型应用场景覆盖本地调试、YARN生产验证与面试能力评估,尤其适用于Java工程师切入大数据工程——本文聚焦Spark 3.5+与JDK

weixin_30632883的博客 389

Spark 3.x 集成 Kafka 0-10 实战:解决 NoClassDefFoundError 的 2 种方案

本文详细解析了Spark 3.x与Kafka 0.10+集成时常见的NoClassDefFoundError问题,提供了动态依赖加载和手动依赖管理两种高效解决方案。通过实战代码示例和版本兼容性检查表,帮助开发者快速构建稳定的流式数据处理管道,优化Spark与Kafka的整合性能。

weixin_30776545的博客 435

PySpark 优雅的解决依赖包管理

平台所有的Spark任务都是采用Spark on yarn cluster的模式进行任务提交的,driver和executor随机分配在集群的各个节点,pySpark 由于python语言的性质,所以pySpark项目的依赖注定不能像java/scala项目那样把依赖打进jar包中轻松解决问题。所以本文主要目标就是解决pySpark在分布式的情况下,如何优雅的解决项目中的依赖问题,目前总结出如下三种办法供大家使用。

qq_31806205的博客 1683

Spark本地环境搭建:JDK11+Spark3.4.2+Hadoop3.3完整避坑指南

Apache Spark 是一个基于内存的分布式计算框架,其核心依赖 JVM 运行时与 Python 生态的深度协同。理解 Spark 环境搭建的本质,需从 Java 版本兼容性、PySpark 配置机制和 Hadoop 二进制集成三者耦合关系入手——JDK 版本不匹配会触发 JNI 崩溃或泛型擦除异常,PySpark 与 PyArrow 的 ABI 不兼容将导致进程级段错误,而 Hadoop 客户端 JAR 版本错配则引发 NoSuchMethodError 等运行时类加载失败。这些并非配置疏漏,而是 S

weixin_33857679的博客 513

Spark环境搭建与核心原理:从单机部署到集群数据分析实战

Apache Spark作为领先的分布式计算框架,其核心价值在于通过内存计算和弹性分布式数据集(RDD)等机制,大幅提升了大规模数据处理的性能与开发效率。理解Spark的架构原理,包括Driver、Executor与集群管理器的协同工作方式,是构建稳定计算环境的基础。在数据处理领域,Spark广泛应用于实时分析、机器学习等场景,其DataFrame API和结构化流处理为开发者提供了高效的编程模型。本文聚焦于Spark环境搭建的常见问题,如依赖管理与版本对齐,并通过一个销售数据分析案例,演示如何利用窗口函数

weixin_30701575的博客 450

Android Studio中把llama.cpp编译Android .so

本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型

Zhang Phil 524

MT6826SGT-STD-R绝对值编码器深度解析:精准控制+灵活编程

本文详细介绍MT品牌的高性能绝对值编码器——MT6826SGT-STD-R。:区别于传统增量式编码器,绝对值输出无需掉电归零,开机即获准确位置数据。的核心优势,结合应用场景与选型指南,为工程师提供一站式解决方案参考。MT6826SGT-STD-R是一款专为工业级精密控制设计的。该设备广泛应用于伺服系统、机器人关节校准、自动化产线等领域。:15bit分辨率实现细腻的位置反馈;:通过专用编写器可自定义多项关键参数;:优化电路设计,适应复杂电磁环境。

2501_93066786的博客 679

PySpark - python package的测试

PySpark提供了一种将python环境剥离到镜像之外的一种方式,众所周知,在docker的优化方案中,减小镜像的体积能够节省资源、提高效率,这是一种“极大程度上”能够优化镜像的方式。在这篇博文中,我主要使用conda打包python的方式测了一下在k8s集群上的client/cluster模式提交任务。......

Bsj' blog 898

Avalonia跨平台开发入门:从安装到运行第一个应用(Windows/Linux/macOS)

本文详细介绍了Avalonia跨平台开发的基础入门指南,从安装到运行第一个应用的全过程。涵盖Windows、Linux和macOS三大平台的环境配置,特别推荐使用Visual Studio进行开发,并提供常见问题的解决方案,帮助开发者快速上手Avalonia框架。

weixin_28688385的博客 544

Spark入门实战:从单机测试到集群部署的完整路径与避坑指南

分布式计算框架是处理海量数据的关键技术,其核心原理在于将计算任务分解并分配到多台机器上并行执行,从而突破单机在内存和算力上的瓶颈。这种架构通过内存计算和弹性容错机制,实现了比传统磁盘读写快几个数量级的处理速度,其技术价值在于能够高效应对TB乃至PB级数据的复杂分析、机器学习迭代和准实时流处理等场景。在实际工程实践中,Apache Spark作为主流框架,其环境搭建与配置是首要挑战。本文聚焦于Spark的本地模式与独立集群部署,通过解析RDD、DataFrame等核心概念,并结合典型的数据倾斜与Shuffle

weixin_34405354的博客 381

视觉SLAM十四讲--第13讲 实践:设计SLAM系统(最详细的代码调试运行步骤)

最详细的代码调试运行避坑说明,也包含了我自己对代码的理解,如有理解错误的地方,欢迎指正交流。

记录和分享 1万+

告别水印!Vue3项目集成Stimulsoft.Reports.js完整配置与激活指南

本文详细介绍了如何在Vue3项目中集成Stimulsoft.Reports.js,提供从授权策略到性能优化的完整解决方案。通过模块化架构设计和现代化引入方式,帮助开发者高效实现专业级报表功能,同时避免版权风险和水印问题,特别适合中小型项目需求。

weixin_33701294的博客 433

Apache Spark分布式计算实战:从核心概念到集群部署与性能调优

分布式计算是处理海量数据的关键技术,其核心原理在于将大规模计算任务分解到多台机器上并行执行,从而突破单机性能瓶颈。这项技术的价值在于能够高效处理TB甚至PB级别的数据,显著提升数据处理速度与系统吞吐量。在工程实践中,分布式计算框架广泛应用于大数据分析、实时流处理、机器学习等场景。Apache Spark作为主流框架,以其内存计算和统一分析引擎著称,通过RDD、DataFrame等核心抽象实现高效数据处理。本文以Spark为例,深入解析其集群架构、资源调度机制,并提供从环境搭建、应用开发到生产部署的完整实战指

weixin_30788619的博客 535

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

Apache Spark 实战入门:从核心概念到环境搭建与数据分析案例

大数据处理的核心挑战在于如何高效、统一地应对海量数据的计算需求。传统MapReduce模型因其磁盘密集型计算和复杂的编程模型,在开发效率和实时性上存在瓶颈。Apache Spark通过引入弹性分布式数据集(RDD)和内存计算范式,从根本上提升了数据处理速度,并提供了统一的编程模型。其技术价值在于将批处理、流处理、机器学习和图计算整合在一个框架下,极大地降低了技术栈复杂度和运维成本。在应用场景上,Spark特别适合处理逻辑复杂多变、需要低延迟交互式查询或实时响应的数据任务。本文以解决常见的“object sp

weixin_30500473的博客 636

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

基于深度学习的垃圾邮件识别

垃圾邮件的大量存在严重威胁着电子邮件系统的安全和效率。基于深度学习的垃圾邮件识别技术已经成为目前最有效的解决方案之一。本文将详细介绍使用深度学习技术进行垃圾邮件识别的方法,并提供相应的代码实现。 随着电子邮件的广泛应用,垃圾邮件的数量不断增加,传统的规则和统计方法已经无法满足对垃圾邮件进行准确识别的需求。深度学习技术以其强大的模式识别能力和自动特征提取能力成为解决垃圾邮件识别难题的有效工具。

一键难忘的博客 1095

Spark NEO Core实战:打通Spark与Neo4j的图计算桥梁

在大数据处理领域,Apache Spark凭借其强大的分布式计算能力,已成为批处理和流式计算的行业标准。然而,当业务场景涉及复杂的关联分析、路径查询或社区发现时,传统的表结构计算模型往往难以高效处理深层关系数据。图计算模型通过顶点和边的抽象,成为处理这类关系数据的核心技术。为了在Spark生态中集成图计算能力,Spark NEO Core作为连接Spark与图数据库(如Neo4j)的关键桥梁应运而生。它本质上是一个Spark数据源插件,实现了双向数据通道和计算下推,允许开发者直接在Spark DataFra

weixin_33724570的博客 1016

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何5分钟上手Apache Spark:从下载到运行第一个分布式计算的完整新手指南

Apache Spark 是一个用于大规模数据处理的统一分析引擎,支持分布式计算、SQL 查询、机器学习和流处理。本文是一份面向新手和 Python 用户的 **Spark 入门教程**:你将通过 PySpark 完成下载安装、启动交互式 Shell、运行经典 WordCount 程序,并学会用 Web UI 查看任务运行状态——整个过程不到 5 分钟。 ## 为什么选择 Apache Spar

gitblog_00183的博客 936

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

/usr/hdp目录下的spark包引发的血案

现象 机房断电后,HDP Hadoop各重要组件启动异常。 单独从Ambari界面启动Zookeeper报错,报错截图如下 解决 根据报错信息,定位到错误发现在ambari-python-wrap /usr/bin/hdp-select versions | grep ^2.4.3.0-227 | tail -1这条命令,单独在节点上执行此命令,输出如下, [root@namenode-1 ha...

数据源的港湾 1872

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何构建基于Spark的智能电影推荐系统:一站式实战指南

你是否曾为构建一个完整的推荐系统而感到困惑?面对海量用户行为数据、复杂的推荐算法和实时处理需求,传统架构往往难以应对。"懂你"电影推荐系统正是为解决这一挑战而生的开源项目,它集成了Python爬虫、Java Web应用、后台管理和Spark推荐引擎,为你提供了一个从数据采集到推荐展示的完整解决方案。 ## 问题场景:当传统推荐系统遇上大数据挑战 在今天的数字娱乐时代,用户每天产生海量的电影观看

gitblog_00094的博客 928

Apache Spark 从入门到实践:核心架构、环境搭建与数据分析案例详解

大数据处理的核心挑战在于如何高效、可扩展地处理海量数据。内存计算技术通过将中间数据尽可能保留在内存中,避免了传统磁盘I/O带来的性能瓶颈,从而大幅提升了数据处理速度。Apache Spark作为领先的分布式内存计算框架,其核心原理基于弹性分布式数据集(RDD)和DAG调度引擎,实现了任务的惰性求值与并行执行。这一技术为迭代式机器学习、交互式查询等场景带来了数量级的性能提升。在工程实践中,开发者常面临环境配置、依赖管理(如解决 `object spark is not a member of package

weixin_30387423的博客 378
上一篇: 使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决
下一篇: Oracle创建表空间、用户、分配权限、导出、导入数据
Ronney-Hua
博客等级 码龄10年 48粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值