MAC OS 如何安装 PySpark

Apache Spark的Python接口PySpark使得数据科学家能用Python进行Spark编程。本文详细介绍了如何在MAC OS上通过HomeBrew简洁安装PySpark,包括Java和Scala环境的配置,Python3的适配,环境变量的设置,以及最终的验证步骤。

Apache Spark是用 Scala编程语言 编写的。为了用Spark支持Python,Apache Spark社区发布了一个工具PySpark。使用PySpark,您也可以使用Python编程语言中的 RDD 。正是由于一个名为 Py4j 的库,他们才能实现这一目标。

PySpark提供了 PySpark Shell ,它将Python API链接到spark核心并初始化Spark上下文。今天,大多数数据科学家和分析专家都使用Python,因为它具有丰富的库集。将Python与Spark集成对他们来说是一个福音。

下面本文教大家如何来简单地安装pyspark(之前也在网上搜索了很多教程,无奈都是鸡肋,繁琐又不实用):

  1. 安装HomeBrew,homebrew地便捷性相信大家都有所耳闻,使用他可以很方便地再mac上安装很多软件。安装教程就不多介绍了,很简单地一句命令即可搞定。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  1. 安装Java依赖环境和Scala环境
    spark是使用scala语言来完成编写的,而scala语言是依赖于java虚拟机来运行的,因此我们需要安装这两者:
brew cask install java
brew install scala
  1. 完成前面两步以后,我们就可以安装spark框架了。
brew install apache-spark

当terminal显示完成安装以后,我们还需要使用强大的homebrew来检查一下安装依赖等等是否存在问题。

brew doctor

如果没有问题的话,系统会提示 “Your system is ready to brew.”,有问题的话homebrew也会提示接下来如何操作,这里就不一一细细列举了。

  1. 接下来安装pyspark,我这里使用的是python3,所以需要安装对应python3的。
pip3 install pyspark
  1. 至此基本安装完毕,进入环境变量的设置环节。Mac最新操作系统Catalina的shell该用zsh,因此需要设置.zshrc(没有的话在用户home目录下创建一个新的),如果是老系统的话shell使用的是bash,因此需要对应的设置.bashrc文件。

  2. 设置Java环境变量。

export JAVA_HOME=/Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/contents/Home/
export JRE_HOME=/Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/

这里解释一下,不能完全照抄,需要你看一下/Library/java/JavaVirtualMachines/这个目录下jdk对应的版本号,把对应的数字改一下,我这里是adoptopenjdk-8.jdk

  1. 接下来设置spark的环境变量。
export SPARK_HOME=/usr/local/Cellar/apache-spark/2.4.5/libexec
export PATH=/usr/local/Cellar/apache-spark/2.4.5/bin:$PATH

这里也是要解释一下,需要你看一下/usr/local/Cellar/apache-spark/这个目录下spark版本号,把对应的数字改一下,我这里是2.4.5

  1. 设置pyspark环境变量。首先需要找到python3的安装环境
which python3

将屏幕输出的python3安装路径记录下来,例如我这里输出的是/Users/duan/.virtualenvs/py3/bin/python3。我使用的是virtualenv虚拟环境,如何搭建virtualenv虚拟环境这里不再赘述。

  1. 正式设置pyspark环境变量。
export PYSPARK_PYTHON=/Users/duan/.virtualenvs/py3/bin/python3
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

后两项是设置使用jupyter notebook来使用pyspark。
至此安装完成,让我们来验证一下。

在terminal中输入pyspark,会启动一个jupyter,我们新建一个jupyter来写一个简单的例子代码检查一下。

from pyspark import SparkContext

sc =SparkContext()
nums= sc.parallelize([1,2,3,4])
print(nums.take(1))
sc.stop
# [1]

参考文献:
https://medium.com/swlh/pyspark-on-macos-installation-and-use-31f84ca61400

<think>好的,我现在要解决用户在PySpark中遇到的map操作报错问题,具体是因为缺少PYSPARK_PYTHON环境变量。首先,我需要回忆一下PySpark的环境配置相关知识。 用户提到在运行map操作时报错,可能与Python解释器的路径有关。根据提供的引用内容,设置PYSPARK_PYTHON环境变量是关键。比如引用[1]、[2]、[3]和[4]都提到了在代码中通过os.environ来设置这个变量,或者直接在系统环境变量中添加。这应该是解决问题的第一步。 接下来,我需要考虑不同的设置方法。用户可能是在代码中设置,或者在系统级别配置。在代码中设置需要在SparkContext初始化之前完成,否则可能不生效,因为Spark在启动时就已经确定了环境变量。例如,引用[4]中的代码就是在创建SparkConf和SparkContext之前导入了os并设置了环境变量。所以需要确保在代码的最开始部分设置,并且路径正确。 另外,用户可能使用的路径格式有问题。比如在Windows系统中,反斜杠可能需要转义或者使用原始字符串。例如引用[1]中使用了r"D:\..."来避免转义问题,而引用[3]中使用了正斜杠。路径是否正确也是需要检查的地方。 然后,可能需要检查Python解释器的路径是否有效。用户提供的路径是否存在,是否有权限访问。比如,是否安装了Anaconda并在指定位置有python.exe。 另外,如果用户在集群上运行,可能需要确保所有节点都配置了相同的环境变量。不过用户的问题可能是在本地模式下,所以设置本地环境变量或代码中的设置应该足够。 还有,用户提到的错误是否与map操作相关。例如,在map函数中如果使用了某些Python库,而PySpark没有正确指向Python解释器,可能会导致序列化或执行错误。这时候设置PYSPARK_PYTHON可以确保所有executor使用相同的Python环境。 总结解决方案步骤:1.在代码开头设置环境变量;2.检查路径是否正确;3.确保在SparkContext初始化前设置;4.验证系统环境变量是否配置。此外,可能需要重启IDE或命令行来使系统环境变量生效。 最后,根据用户提供的引用,特别是引用[1]和[4]中的示例,可以整理出具体的代码示例,并提醒用户注意路径格式和位置。同时,生成相关问题,帮助用户进一步理解环境变量配置的其他方面。</think>### PySpark中map操作因缺少PYSPARK_PYTHON环境变量报错的解决方案 #### 原因分析 PySpark执行`map`等操作时,需要明确指定Python解释器的路径。若未正确设置`PYSPARK_PYTHON`环境变量,会导致以下问题: - 无法找到Python解释器,引发`ImportError`或路径相关的错误[^1] - 分布式计算时Worker节点无法同步Python环境[^2] --- #### 解决方案 ##### 方法1:代码内直接设置(推荐) 在初始化SparkContext**之前**,通过`os.environ`指定Python路径: ```python import os # 设置Python解释器的绝对路径(示例路径需替换为实际路径) os.environ['PYSPARK_PYTHON'] = r"D:\anaconda\envs\spark\python.exe" # Windows路径 # os.environ['PYSPARK_PYTHON'] = "/opt/anaconda3/envs/spark/bin/python" # Linux/Mac路径 from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("test").setMaster("local[*]") sc = SparkContext(conf=conf) # 示例map操作 rdd = sc.parallelize([1,2,3]) result = rdd.map(lambda x: x**2).collect() print(result) ``` ##### 方法2:系统级环境变量配置 1. **Windows系统**: - 右键点击“此电脑” → 属性 → 高级系统设置 → 环境变量 - 新建系统变量: - 变量名:`PYSPARK_PYTHON` - 变量值:`Python解释器的绝对路径`(如`D:\anaconda\envs\spark\python.exe`) - 重启IDE或命令行窗口使配置生效 2. **Linux/Mac系统**: ```bash # 在~/.bashrc或~/.zshrc中添加 export PYSPARK_PYTHON=/opt/anaconda3/envs/spark/bin/python source ~/.bashrc # 使配置生效 ``` ##### 方法3:Spark配置文件指定 修改`spark-env.sh`文件(位于Spark安装目录的`conf`文件夹): ```bash # 添加以下内容 export PYSPARK_PYTHON=/path/to/python ``` --- #### 验证配置是否生效 ```python import os print("当前PYSPARK_PYTHON路径:", os.environ.get('PYSPARK_PYTHON')) # 应输出类似:D:\anaconda\envs\spark\python.exe ``` --- #### 注意事项 1. 路径必须使用**绝对路径**,且包含文件名(如`python.exe`) 2. Windows路径建议使用原始字符串(`r"..."`)或双反斜杠(`\\`)避免转义错误[^1] 3. 若使用虚拟环境,需指向虚拟环境内的Python解释器[^3] 4. 在集群模式下,需确保所有节点环境变量一致 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值