1. 相关知识学习
1.1 Spark的基本介绍
Apache Spark是一个开源的大数据处理框架,使用内存计算方式加速大数据处理。Spark的主要优点包括高速批量处理、交互式查询、实时流处理以及机器学习等功能。**Spark由Scala语言实现,是一种面向对象、函数式编程语言,支持多种编程语言,如Scala、Java、Python和R等,可以运行在Hadoop集群上或者独立运行。**Spark的核心概念包括弹性分布式数据集(RDD)、DataFrame和Dataset等。RDD是Spark的核心数据结构之一,是一种不可变的分布式对象,可以并行计算和操作数据。DataFrame是一个类似于关系型数据库中的表的数据结构,支持多种数据格式,如JSON、CSV和Parquet等。Dataset是RDD和DataFrame的结合体,它可以提供类型安全、面向对象的API,同时还能享受到Spark SQL的优势。Spark还提供了一些扩展库,如Spark Streaming、Spark MLlib和Spark GraphX等,可以支持流处理、机器学习和图处理等不同领域的应用场景。
整体Spark的框架通信采用的模块:netty
1.2 Spark四大特点
运行速度快
方面一: Spark基于内存计算,采用DAG有向无环图,进行无环计算操作,中间计算的结果可以保存在内存中 方面二: Spark基于线程运行的,线程的启动和销毁的速度要高于进程的效率的
易用性好
方面一: Spark提供了多种语言的客户端,允许多种语言来操作Spark,如Python、SQL、JAVA、Scala、R..... 方面二: Spark提供了更加高阶的API,而且这些API在不同语言上,基本都是一样的,大大降低了程序员学习的难度
通用型强
Spark提供了多种工具库,用于满足各种计算的场景 Spark Core: Spark的核心库 次重点 它是学习Spark的基础 主要放置了Spark的核心的API,内存管理的API,包括维护RDD的数据结构 Spark SQL: 通过SQL操作操作Spark计算框架 (最为重要的) Spark Streaming: Spark的流处理,主要是用于支持流式计算(实时计算)(目前不适用,主要后续使用Flink完成流式计算,效率比Streaming更好) Spark MLlib: Spark的机器学习库,主要包括主要算法库: 回归,聚类...(针对特定人群) Spark Graphx: Spark的图计算,比如行程规划
随处运行
方面一: Spark程序可以运行在不同的资源调度平台上: YARN、Spark集群,云上的调度器(阿里、华为等都提供)
方面二: Spark程序可以和大数据生态圈中各种软件进行集成,让我们能够更加方便使用Spark和相关软件
2. 所有环境版本
- java version =1.8.0_361
- PySpark version = 3.1.2
- Hadoop version = 3.3.0
3. JAVA jdk安装
windows
ubuntu
# 解压命令
tar -zxvf jdk-8u271-linux-x64.tar.gz
# 开始配置环境变变量,通过 vi /etc/profile 命令打开 profile 文件盘配置环境变量,打开之后按 i 进入 insert (插入)模式,在文件末尾添加上环境变量
export JAVA_HOME=/uer/loacal/jdk1.8.0_271
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# 退出后 source /etc/profile
source /etc/profile
# 测试是否成功
Java -version
4. PySpark安装
PySpark安装包括两种安装方式,第一种直接pip指定版本安装,第二种直接下载文件离线安装。
第一种:(无需添加环境变量)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark==3.1.2
pip install findspark
第二种:(需要添加环境变量)
linux平台:参考链接
Windows平台:下载文件
下载符合本机Hadoop和JDK版本的Spark安装包
下载完成后进行解压在D盘的根目录下,设置环境变量。
首先新建一个环境变量SPARK_HOME,变量名是安装的路径:
5. Hadoop安装
下载地址:点击
下载上述版本
放入文件夹,在环境变量指定Hadoop路径
6. 测试
打开Pycharm,输入以下代码并运行
import findspark
findspark.init()
from datetime import datetime, date
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
rdd = spark.sparkContext.parallelize([
(1, 2.5, 'string1', date(2022, 1, 1), datetime(2022, 1, 1, 12, 0)),
(2, 3.5, 'string2', date(2022, 2, 1), datetime(2022, 1, 2, 12, 0)),
(3, 4.5, 'string3', date(2022, 3, 1), datetime(2022, 1, 3, 12, 0))])
df = spark.createDataFrame(rdd, schema=['A', 'B', 'C', 'D', 'E'])
df.show()