最近在研究pyspark,首先把环境配置下,记录如下:
作为入门材料,首先看了 eat_pyspark_in_10_days 里面第一章列举了安装方法,然后照着配置了下,发现自己本地还是跑不起来,故开始一番折腾。
-
java 1.8.0_301下载(下载路径随意 自己记住)
- 地址链接:Java Downloads | Oracle
- 这里我是直接下一步下一步默认位置安装(担心出错)
- 注意:但还是出错了,后面配置环境变量时会遇到路径有空格问题,这里建议安装自定义路径最好没空格
- 然后按照入门材料里的教程配置了环境变量
- 注意:环境变量分系统变量、用户变量,我没搞懂里面具体说的啥,也在用户变量里配置了java_home 直接看图吧
-
然后这里测试下是否配置成功 cmd:java -version 如果出现版本信息就很好!如果没出现在细细配置环境变量
- 这里我是直接下一步下一步默认位置安装(担心出错)
- 地址链接:Java Downloads | Oracle
-
spark下载(下载路径随意 自己记住)
- 这里我下载的是 spark-3.1.2-bin-hadoop3.2
- 然后配置环境变量 SPARK_HOME:你的安装路径(G:\spark-3.1.2-bin-hadoop3.2)
-
hadoop下载(下载路径随意 自己记住)
- 这里我下载的是 hadoop-3.2.2
- 然后配置HADOOP_HOME:G:\hadoop-3.2.2
-
winutils.exe下载(下载路径随意 自己记住)
- https://github.com/steveloughran/winutils 我下载的是对应hadoop-3.2\bin下的winutils.exe
- 文件不大,贴百度云:链接:https://pan.baidu.com/s/1dqM05lZyeU1650Vy5OSxWg
提取码:ae86 - 然后将下载好的winutils.exe 粘贴到 *\hadoop-3.2.2\bin下
- 然后我这里本地就可以跑起来了,但是有几个warn我也没仔细看啥意思,能跑起来就行
-
import pyspark from pyspark import SparkContext, SparkConf import os import findspark import warnings warnings.filterwarnings("ignore") os.environ['JAVA_HOME'] = r'C:\Java\jdk1.8.0_301' os.environ['HADOOP_HOME'] = r'G:\hadoop-3.2.2' # 指定spark_home为刚才的解压路径,指定python路径 spark_home = r"G:\spark-3.1.2-bin-hadoop3.2" python_path = r"E:\Anaconda\Anaconda\envs\spark\python" findspark.init(spark_home, python_path) conf = SparkConf().setAppName("test").setMaster("local[4]") sc = SparkContext(conf=conf) print("spark version:", pyspark.__version__) rdd = sc.parallelize(["hello", "spark"]) print(rdd.collect())
- output:
-
E:\Anaconda\Anaconda\envs\spark\python.exe F:/python_project/untitled/src/scripts/test/py_spark.py 21/09/27 20:42:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). spark version: 3.1.2 21/09/27 20:42:57 WARN SizeEstimator: Failed to check whether UseCompressedOops is set; assuming yes ['hello', 'spark']
-
-