一、环境搭建

1、windows下spark环境搭建

2、python3.7安装并配置环境变量;3.7以上版本在后期运行时容易出现问题;

3、pycharm对应python文件配置PYTHONPATH;

二、pycharm运行一个pyspark程序

1、先在cmd中使用pip安装pyspark和findspark,方便导入调用

pip install pyspark

pip install findspark

2、项目结构

3、pycharm的python环境配置

4、代码

from pyspark import SparkConf
from pyspark import SparkContext

import findspark

findspark.init()
conf=SparkConf().setAppName("pysparkTest").setMaster("local[*]")
sc=SparkContext.getOrCreate(conf)
rdd=sc.parallelize([1,2,3,4])
rdd1=rdd.map(lambda s:s*2)
print(rdd1.collect())

5、运行中出现的问题

问题一:

21/06/17 14:24:46 WARN Shell: Did not find winutils.exe: {}
java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems

解决办法:

1:下载对应版本winutils.exe文件。
2:将文件放到到hadoop的bin目录下。
3:将hadoop.dll复制到C:\Window\System32下。
4:添加环境变量HADOOP_HOME,指向hadoop目录 。
5:将%HADOOP_HOME%\bin加入到path里面。
6:重启pycharm;

问题二:

py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM

解决办法:

1)、pycharm配置PYTHONPATH

D:\tools\spark-2.4.7-bin-hadoop2.7\python;D:\tools\spark-2.4.7-bin-hadoop2.7\python\lib\py4j-0.10.7-src.zip

2)、在从pyspark导入SparkConf之前先执行下面的语句:

import findspark
findspark.init()

作用就是初始化找到本机安装的spark的环境;

问题三:

TypeError: an integer is required (got type bytes)

解决办法:

由于刚开始安装python环境为3.9太高,降低为3.7就解决了;

参考文章

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐