PySpark数据分析基础:Spark本地环境部署搭建

简介: PySpark数据分析基础:Spark本地环境部署搭建

前言:


spark


Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求


官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍

20210315122557731.png


由于Spark框架大多都搭建在Hadoop系统之上,要明白Spark核心运行原理还是得对Hadoop体系有个熟悉的认知。从Hadoop1.0到Hadoop2.0架构的优化和发展探索详解这篇博客大家可以先去温习一下Hadoop整个体系,然后再来了解Spark框架会更有效率。


对于Spark的框架大家可以参考我之前的Spark三部曲:


Spark框架深度理解一:开发缘由及优缺点


Spark框架深度理解二:生态圈


Spark框架深度理解三:运行架构、核心数据集RDD


PySpark


PySpark 是 Spark 为 Python 开发者提供的 API。

  • 支持使用python API编写spark程序
  • 提供了PySpark shell,用于在分布式环境交互式的分析数据


20201011170224639.png


通过py4j,将pythonAPI链接到sparkContext上,以此python程序可以动态的访问jvm中的java对象,java也可以动态的回调python对象


首先SparkContext是spark程序的入口,SparkContext使用Py4J启动 JVM 并创建 JavaSparkContext。py4J启动sparkContext后, 分发到work节点, 所以集群节点上必须有python环境才能解析python文件。


那么废话不多说我们现在开始搭建。 若是大家安装速度过慢可以私聊博主分享网盘。


一、安装JDK


也就是下载JAVA的JDK了,这里给出官网链接:


JDK


我这里本地已经部署了,大家选择对应的版本下载就好,本人的JDK为 1.8.0_201Window-x64版本。


960fca61b77341dcb9d16d01409ee43b.png


安装完成即可,然后配置一下本地环境:

36e142d6e5914b45886eee6138dc75d8.png


然后classpath有:


".;%JAVA_HOME%\lib\dt.jar";%JAVA_HOME%\lib\tools.jar;C:\PROGRA~1\Java\JDK18~1.0_2\lib;"

6047f300f79c451883e1072ecd34b24f.png


之后在终端里输入:


java -version


77bb3bd26dc44df79301cbcc9a343bb3.png

这样就OK了


二、安装anaconda


这个我本地已经装好了,去官网上下载:


anaconda


选择对应版本下载就好了


24dd5a75dd9744fb9c99efc1e0bdbe76.png

这两个地方记得全勾上, 这样就省去了添加环境变量的麻烦。


0cbfd134d77c45b09ae19342a75cdd88.png


这样就安装完毕,一般使用他的Jupyter notebook。


三、安装spark


还是去spark的官网,这里为什么不先装Hadoop呢?是因为spark的版本要适配对应Hadoop的。


spark

484035854aad4333b7927401c4e88694.png

我这里直接下的是最新版本的


6434d48f055a4eadaf3edc33dd939640.png


我建议用最新版本,当然可能会报一些不兼容的错误,回退版本就行,但是还是建议用最新版本的软件。


然后继续配置环境变量:


614717e2185f4b4893e7660d9df4ba2f.png


然后记得在Path上再加上个:

ecd39f94bd8947b396291a5e682b8ac0.png


四、安装Hadoop


我这里的hadoop版本是2.6.0的版本已经很老了:


e93b3d87938f4610a21a3d3280462836.png

这里我们直接升级到新版本,不用删除老版本的hadoop直接下载新版本的hadoop然后更改一下环境变量就行了:


这里要注意一下版本问题,根据前面Spark我们选择的适配版本下载hadoop:

33cdc4ac523d49a99d0167a8684f9eb0.png

binary和source的区别


binaries表示已编译好的文件,可以直接使用的版本;

source表示源代码版本,需要自己编译;

我们下binary版本的,解压一下:


a88219e6420a4a67baefbe56e60390ca.png


然后继续修改环境变量:

b1b3da8baf7f4f8dbfc794e8fa7b926e.png


在Path上加上:

c46b1fd1bc954efc940e9108618a70e5.png


就好了。


五、安装Scala


Scala的安装方法我在另一篇博客有些完全没有问题:


de03cb7345e042eb8d2f7c5df1961a69.png


IDEA上使用Scala编程方法


安装以及使用都十分详细了,这里不做过多演示。


六、配置在Jupyter Lab中运行PySpark


首先确保自己是有JupyterLab的:

5b3001e62bfa4b608378fdb1f40d13a8.png


用conda list也能够看到:


0c0905c4dd4046eeab656150f562ffe7.png


没有安装的话使用conda install jupyterlab进行安装,然后继续修改环境变量就好了:

PYSPARK_DRIVER_PYTHON


d6c495ad6085495b88603c0833dc0d99.png


PYSPARK_DRIVER_PYTHON_OPTS

a5bc7f306cad4e1eaa62c4443a9e634e.png


有了这两个以后直接输入pyspark就好了

c1e8a71b562a41758d8d94298852738c.png

5e354488558e4cb99dda5dae593f7b3f.png


2a3158666ced4b6c9e8da9433cd7a96a.png

输入sc:


6c044710d3ba4fb595d88bf8a1a5291d.png

七、配置pyspark


下载的spark下面的python文件下面是自带pyspark包的,需要讲此包复制到anaconda的目录下面防止出现通过anaconda下载的pyspark和spark不兼容的情况。

 

3a776e856b75438890f351239d806802.png


转移到:

060a108da6ec4f3cafd20ebe079eef93.png


就可以了。


八、配置winutils


根据我们下载的Hadoop版本下载对应的winutils:

我这里是hadoop-3.3版本的就下了3.3版本的winutils:


a3463efe7ccc46da86a1a9b0e1b4ae9c.png


放到hadoop的bin目录下。


九、安装findspark


直接输入:


pip install findspark



九、检验是否存在错误


在cmd上输入spark-shell是否存在问题:


spark-shell


5e51b105371944d7b0849e510a50a9e7.png


证明Spark安装是没有产生任何问题的。

那么我们进行pyspark的测试:

在cmd上面输入pyspark:

进入Jupyterlib:

检验一下findspark:

import findspark
findspark.init()
findspark.find()

574f7293fe18401cb28d5eb1bc25c264.png

没有问题。 跑个实例:

import findspark
findspark.init()
from pyspark import SparkContext
sc = SparkContext("local", "count app")
words = sc.parallelize(
    ["scala",
     "java",
     "hadoop",
     "spark",
     "akka",
     "spark vs hadoop",
     "pyspark",
     "pyspark and spark"
     ])
counts = words.count()
print("Number of elements in RDD -> %i" % counts)

能跑通就说明没问题。


0ccde4a24c364bd3b7824f07495b5a20.png


当然Juypterlib上面也一样:

68204f2f74ad46d7be879a291d023120.png

目录
相关文章
|
2月前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
74 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
48 5
|
6月前
|
分布式计算 运维 Serverless
EMR Serverless Spark PySpark流任务体验报告
阿里云EMR Serverless Spark是一款全托管的云原生大数据计算服务,旨在简化数据处理流程,降低运维成本。测评者通过EMR Serverless Spark提交PySpark流任务,体验了从环境准备、集群创建、网络连接到任务管理的全过程。通过这次测评,可以看出阿里云EMR Serverless Spark适合有一定技术基础的企业,尤其是需要高效处理大规模数据的场景,但新用户需要投入时间和精力学习和适应。
7189 43
EMR Serverless Spark PySpark流任务体验报告
|
4月前
|
存储 数据可视化 数据挖掘
大数据环境下的房地产数据分析与预测研究的设计与实现
本文介绍了一个基于Python大数据环境下的昆明房地产市场分析与预测系统,通过数据采集、清洗、分析、机器学习建模和数据可视化技术,为房地产行业提供决策支持和市场洞察,探讨了模型的可行性、功能需求、数据库设计及实现过程,并展望了未来研究方向。
207 4
大数据环境下的房地产数据分析与预测研究的设计与实现
|
4月前
|
Kubernetes 并行计算 数据挖掘
构建高可用的数据分析平台:Dask 集群管理与部署
【8月更文第29天】随着数据量的不断增长,传统的单机数据分析方法已无法满足大规模数据处理的需求。Dask 是一个灵活的并行计算库,它能够帮助开发者轻松地在多核 CPU 或分布式集群上运行 Python 代码。本文将详细介绍如何搭建和管理 Dask 集群,以确保数据分析流程的稳定性和可靠性。
287 3
|
5月前
|
分布式计算 运维 Serverless
EMR Serverless Spark 实践教程 | 通过 EMR Serverless Spark 提交 PySpark 流任务
在大数据快速发展的时代,流式处理技术对于实时数据分析至关重要。EMR Serverless Spark提供了一个强大而可扩展的平台,它不仅简化了实时数据处理流程,还免去了服务器管理的烦恼,提升了效率。本文将指导您使用EMR Serverless Spark提交PySpark流式任务,展示其在流处理方面的易用性和可运维性。
288 7
EMR Serverless Spark 实践教程 | 通过 EMR Serverless Spark 提交 PySpark 流任务
|
5月前
|
机器学习/深度学习 算法 数据挖掘
Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。
【7月更文挑战第5天】**Python强化学习应用于数据分析决策策略:** - 强化学习让智能体通过环境互动学习决策。 - Python因丰富库(如TensorFlow, PyTorch, Keras, Pandas, NumPy)和生态而受青睐。 - 使用OpenAI Gym构建环境,如`gym.make('CartPole-v0')`。 - 选择模型,例如神经网络,定义策略如Q-Learning。 - 训练模型,调整智能体行为,如Q-Learning更新Q表。 - 最后评估模型性能,实现数据驱动决策。
55 3
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的豆瓣电影数据分析可视化系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的豆瓣电影数据分析可视化系统附带文章源码部署视频讲解等
59 0
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的职位数据分析文章源码部署视频讲解等
基于springboot+vue.js+uniapp的职位数据分析文章源码部署视频讲解等
35 0
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的房价数据分析附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的房价数据分析附带文章源码部署视频讲解等
22 0