Python大数据之PySpark-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

PySpark入门

1、Spark与PySpark


Apache Spark是一种用于大规模数据处理的多语言统一引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习

Spark官网:https://spark.apache.org/

按照官网描述,Spark关键特征包括:

  • 批/流处理

    Spark支持您使用喜欢的语言:Python、SQL、Scala、Java或R,统一批量和实时流处理数据

  • SQL分析

    执行快速、分布式ANSI SQL查询以进行BI仪表板和临时报告。运行速度比大多数数据仓库更快

  • 大规模数据科学

    对PB级数据执行探索性数据分析(EDA),而无需采用降采样(缩减采样)

  • 机器学习

    在笔记本电脑上训练机器学习算法,并使用相同的代码扩展到数千台机器的容错集群

Apache Spark与多种框架集成,有助于将其扩展到数千台机器

在这里插入图片描述

Apache Spark支持的存储和基础设施有:

在这里插入图片描述

根据Spark官网,Spark支持Python语言编程

PySpark是Spark为Python开发者提供的API,PySpark依赖于Py4J

Py4J是一个用Python和Java编写的库。通过Py4J,Python程序能够动态访问Java虚拟机 中的Java对象,Java程序也能够回调Python对象

PySpark是Spark官方提供的基于Python语言开发的类库,仅支持在本地Local模式环境下供Python用户开发使用

PySpark官网文档:https://spark.apache.org/docs/3.1.2/api/python/getting_started

2、PySpark开发环境搭建


1)Hadoop的Windows环境配置

由于Hadoop主要基于Linux编写,而Hive、Spark等依赖于Hadoop,因此,Hadoop在Windows上运行需要winutils.exehadoop.dll等文件的支持,winutils.exehadoop.dll等文件必须放置在bin目录下,主要用于模拟Linux下的目录环境

下载地址:后续补充

在这里插入图片描述

配置Hadoop的Windows环境变量:

HADOOP_HOME=D:\Software\Hadoop\hadoop-2.7.7
Path=%HADOOP_HOME%\bin

2)PySpark环境搭建

在PyCharm终端安装PySpark模块:

pip install pyspark==3.1.2

配置HPySpark的Windows环境变量:

PYSPARK_PYTHON=python
PYSPARK_DRIVER_PYTHON=jupyter
PYSPARK_DRIVER_PYTHON_OPTS=lab

当未配置配置PySpark的Windows环境变量时将报错:
org.apache.spark.SparkException: Python worker failed to connect back.
解决:至少确保配置PYSPARK_PYTHON=python该Windows系统环境变量(配置后需要重启PyCharm)

3)PySpark环境验证

Windows+R,输入cmd执行命令:

spark-shell

在这里插入图片描述

成功打印Spark版本说明环境配置成功

3、PySpark的工作机制

PySpark

其中Driver是客户端任务,Executor负责执行具体Task,用户将Spark任务程序Driver提交给资源管理系统(如Yarn、K8s等),Spark会将程序分解为一个个的Task交给Executor执行

为了不影响现有Spark的运行架构,Spark在外围包装了一层Python的API,借助Py4j实现Python和Java的交互,即通过Py4j将PySpark代码“解析”到JVM中去运行

在Driver端,Python通过Py4j来调用Java方法,将用户使用Python写的程序映射到JVM中,比如,用户在PySpark中实例化一个Python的SparkContext对象,最终会在JVM中实例化Scala的SparkContext对象

在Executor端,都启动一个Python守护进程,当Task收到任务请求后,交给底层的Python进程去执行

在这里插入图片描述

4、PySpark批处理


SparkConf是Spark批处理的程序主入口

PySpark单词统计案例:

from pyspark import SparkContext, SparkConf

conf = SparkConf().setMaster("local[*]&#
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python