当前位置:   article > 正文

pyspark使用流程以及遇到的问题(windows版)_findspark.init()

findspark.init()

本文所使用方式为在windows独立环境中进行pyspark的开发,如需链接hdfs还是要借助虚拟机的,主要包含以下几个步骤

一、windows中的环境配置

1、java的安装

这里建议大家选择版本较低的java版本,如果版本较高可能会出现不兼容问题,Java和hadoop的安装流程我之前的文章里面有,大家可以看一下,这里附上链接
hadoop安装

2、hadoop的安装

hadoop安装

链接同上

3、scala的安装

先下载scala的压缩包,依然是官网地址,建议2.11的版本,因为后续我们使用的spark版本为2.4.3

直接解压压缩包即可,

建议所有的解压文件都放在同一目录下,以方便后续查找

在这里插入图片描述

解压完毕后,配置环境变量,SCALA_HOME,以及path

4、spark的安装

和scala一样,直接本地解压,就不用管了,当然,如果你比较讨厌看到红色的很多很多的日志信息,

可以再spark的conf文件夹下,修改一下log4j这个文件,

在这里插入图片描述

把log4j.rootCategory这个参数改为ERROR

这样可以隐去大多数日志信息

解压完毕之后,也是配置环境变量就可以了

最后,检验是否安装成功

java -version

hadoop version

spark-shell

在这里插入图片描述

这样环境配置就搞定了

二,pyspark的导入

1.安装pyspark

先第一步是安装pyspark,直接使用pip安装
*在使用之前要确保SPARK_HOME环境变量已经配置好*

pip3 install pyspark
  • 1

接着启动pyspark有两种方法

方法一:命令行启动

首先启动spark,在命令行中输入以下命令,这样就能直接在jupyter中编辑环境变量了。

pyspark --master spark://127.0.0.1:7077 --num-executors 1 --total-executors-cores 1 --executor-memory 512m

PYSPARK_DRIVER_PYTHON=ipython 

PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark
  • 1
  • 2
  • 3
  • 4
  • 5

使用这种方法可以在命令行中编写,sc对象已经内置就不需要再import了

方法二:使用FINDSPARK

插入一句废话:要使用findspark记得先 pip install findspark。

那么在编写代码前首先写下以下两句

import findspark

findspark.init()
  • 1
  • 2
  • 3

*实例代码*

在这里插入图片描述

*常见报错解决*

1、如果是在findspark.init()报错的话

那么一般是没有设置SPARK_HOME环境变量,记得正确配置。
2、Py4JError:org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM

这个问题困扰了我很长时间,如果在jdk、spark、Hadoop都已正确配置的前提下(正确配置的前提是可以在命令行中启动spark-shell),那么问题就出在pyspark的版本问题上。我的解决方案是回退pyspark的版本到2.3.2
分别输入以下命令即可

pip uninstall pyspark

pip install pyspark==2.3.2

3、pyspark.sql.utils.IllegalArgumentException: 'Unsupported class file major version 56\57\60

JDK版本的原因

可以先看一下版本对应关系

在这里插入图片描述

解决方法:改变系统里的Java版本(尽量降版本),也记得要改变配置的环境变量。

就是用我们一开始说的1.8.013,没有问题,一定要看好环境变量是否更改,确认无误,重启pycharm再执行代码尝试
在这里插入图片描述

ok,可以了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/568052
推荐阅读
相关标签
  

闽ICP备14008679号