day01 pyspark入门和基础环境
# 从Day01_PySpark入门及基础环境.pdf提取的信息
## 一、分布式计算相关
1. 分布式计算思想:将一个大的任务分成为多个任务,程序提交运行以后可以拆分成多个任务执行。
2. 分布式计算组成:包含分布式资源YARN。
3. 分布式计算流程(step1-Input、step2-Process、step3-Output):
- step1:读取数据,将输入的数据按照一定的规则拆分成指定切片数,将读取到的数据从逻辑上放入一个结构,该结构在逻辑上呈现多个分区。
- step2:处理数据,采用分治方式,在节点上进行,基于RDD(有分区的数据)实现,每个分区会对应一个任务,每个任务处理对应分区数据。
- step3:保存结果,每个Task会得到一个结果进行输出或保存。
## 二、Spark相关
### (一)Spark定义与功能模块
1. 定义:基于内存的分布式的统一化的计算引擎,让更多的中间计算结果优先存储在内存。
2. 功能模块:包含Spark Core、Spark Streaming(实时代码编程)、Spark ML(机器学习)。
### (二)Spark特点、开发语言与数据接口
1. 特点:统一化,应用场景覆盖离线、实时、机器学习。
2. 开发语言:Java、Scala、Python、SQL、R。
3. 数据接口:读数据(spark.read)支持json、jdbc、csv、table格式;写数据(df.write)支持json、jdbc、csv、table格式。
### (三)Spark应用场景与实际使用
1. 应用场景:机器学习、数据分析、分布式、离线、实时。
2. 实际使用:分布式机器学习、离线数据分析。
### (四)Spark与其他工具对比
|工具|优点|缺点|
| ---- | ---- | ---- |
|Spark|功能比较全面,语言接口比较丰富|性能上相对而言稍微差一些|
|Presto|性能中等,数据源接口非常丰富|与大数据兼容性比较差,只能有限使用|
|Impala|性能最快,底层用C语言实现|只支持Hadoop相关数据|
### (五)Spark运行模式
1. 本地模式(Local):不是分布式的,单节点启动一个进程。
2. 集群模式(Cluster):是分布式的,会启动两个或多个进程,所有Task都运行在Executor中。
- 进程:Driver(ApplicationMaster)、Executor(Manage Task)。
- 分类:Standalone、Mesos。
- 提交运行命令:spark-submit --master local[2] / yarn。
### (六)Spark比MR快的原因
1. MR不支持DAG,Spark支持DAG,优先将中间结果存于内存,减少不必要的操作。
2. MR的Shuffle是固定的流程,Spark的Shuffle更灵活。
3. MR的Task是进程级别的,Spark的Task是线程级别的,线程级开销更小。
## 三、WordCount实现代码相关
WordCount实现步骤(step1-Input、step2-Process、step3-Output):
1. step1:Input读取数据,代码示例为md = spark.read.text("/path/data.txt")。
2. step2:Process处理数据,对读取的数据进行处理(具体处理逻辑未详细说明)。
3. step3:Output保存结果,将处理得到的结果进行输出或保存(具体输出/保存方式未详细说明)。
## 四、Spark程序要点
1. 监控页:Spark为每个程序都构建一个监控页,程序运行时端口从4040开始。
2. 驱动对象:每一个Spark程序都需要一个驱动对象,基本功能是将读取到的数据转换为RDD。