# 从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。

更多推荐