**Spark基础及源码分析视频课程导读**

**课程解决的问题:**

本课程旨在帮助那些希望系统掌握Spark基础知识、理解其核心原理并能够分析其源码的编程学习者。无论你是希望快速入门Spark的初学者,还是希望进一步提升Spark技能的进阶者,本课程都将为你提供实用的指导和帮助。通过学习本课程,你将能够:

- 熟练运用Scala语言进行Spark程序开发;
- 掌握Spark的核心组件和数据处理流程;
- 深入理解Spark的源码,了解其设计思想和实现机制;
- 能够运用Spark解决实际的数据处理问题,提升数据处理能力。

**适合的基础:**

- 具备基本的编程基础,尤其是Java或Python编程经验;
- 对大数据处理和分布式计算有初步了解;
- 对Scala语言有一定的了解,但希望系统学习其语法和特性。

**建议的学习顺序:**

1. **第1-2节**:首先,你需要安装Scala的开发环境,并熟悉Scala的基本语法和IDEA的使用。这是学习Spark的基础,确保你对Scala有基本的了解。
2. **第3-4节**:接下来,学习如何使用Scala Shell以及如何在IDEA中创建和配置Maven项目。这将帮助你搭建开发环境,为后续的学习打下基础。
3. **第5-7节**:这部分内容较为深入,介绍了Scala中的变量声明、7种值类型和条件表达式、for循环等核心语法。这些是构建Spark程序的基础。
4. **第8节**:最后,了解方法和函数的声明以及如何使用它们,这是编写高效Spark程序的关键。

**学完本课程后,你将能够:**

- 独立使用Scala编写简单的Spark程序,处理基本的数据分析任务;
- 配置和运行Spark应用程序,根据实际需求进行定制;
- 分析Spark的源码,理解和优化Spark的性能和扩展性。

**资料的使用方法:**

为了更好地理解课程内容,建议你结合以下资料进行练习:

- 官方提供的Scala教程和文档:这些资源将帮助你巩固所学的知识。
- 实际的数据处理项目:尝试使用Spark解决一些实际问题,将理论知识应用到实践中。
- Spark的官方示例和代码库:通过学习这些示例,你可以了解Spark的常见用法和最佳实践。
- 在线编程练习平台:这些平台提供丰富的练习机会,帮助你巩固技能。

通过本课程的学习,你将能够填补在Spark知识和实践经验上的空白,进一步提升你的IT技能。别假装什么都会,缺什么就补什么,从基础开始,一步步迈向高级水平。

课程目录

1-1 [Scala语言环境安装、Scala的基本语法] 认识Scala (09:06)
1-2 [Scala语言环境安装、Scala的基本语法] 安装开发环境 (05:41)
1-3 [Scala语言环境安装、Scala的基本语法] Scala Shell、用IDEA创建Maven项目 (14:46)
1-4 [Scala语言环境安装、Scala的基本语法] 配置Maven本地仓库、导入切换项目等其它配置 (07:26)
1-5 [Scala语言环境安装、Scala的基本语法] 变量的声明 (06:19)
1-6 [Scala语言环境安装、Scala的基本语法] Scala的7种值类型和条件表达式 (08:07)
1-7 [Scala语言环境安装、Scala的基本语法] for循环 (12:50)
1-8 [Scala语言环境安装、Scala的基本语法] 方法和函数的声明以及方法转换成函数 (17:36)
1-9 [Scala语言环境安装、Scala的基本语法] 数组 (20:10)
1-10 [Scala语言环境安装、Scala的基本语法] 映射 (08:37)
1-11 [Scala语言环境安装、Scala的基本语法] 元组 (12:15)
1-12 [Scala语言环境安装、Scala的基本语法] 集合之Seq (18:09)
1-13 [Scala语言环境安装、Scala的基本语法] 集合之Set (07:31)
1-14 [Scala语言环境安装、Scala的基本语法] 集合之Map (05:27)
2-1 [常用方法练习] lazy关键字 (10:39)
2-2 [常用方法练习] 函数式编程练习之常用方法 (25:51)
2-3 [常用方法练习] 函数式编程之reduce (14:06)
2-4 [常用方法练习] 函数式编程之fold (08:16)
2-5 [常用方法练习] 函数式编程之aggregate (06:54)
2-6 [常用方法练习] 函数式编程之交并差集 (02:54)
2-7 [常用方法练习] Scala实现WordCount (18:58)
3-1 [面向对象、模式匹配] 创建类、属性 (20:16)
3-2 [面向对象、模式匹配] 构造器、辅助构造器 (20:14)
3-3 [面向对象、模式匹配] 单例对象 (14:46)
3-4 [面向对象、模式匹配] 伴生对象 (10:05)
3-5 [面向对象、模式匹配] apply和unapply方法 (22:40)
3-6 [面向对象、模式匹配] private关键字 (14:16)
3-7 [面向对象、模式匹配] 特质、抽象类、继承、重写、实现等 (19:37)
3-8 [面向对象、模式匹配] 模式匹配之匹配字符串 (09:26)
3-9 [面向对象、模式匹配] 模式匹配之匹配类型 (07:13)
3-10 [面向对象、模式匹配] 式匹配之匹配数组、元组、集合 (18:33)
3-11 [面向对象、模式匹配] 模式匹配之样例类 (09:15)
3-12 [面向对象、模式匹配] 模式匹配之偏函数 (08:41)
4-1 [Actor、柯里化、隐式转换] 作为值的函数 (07:41)
4-2 [Actor、柯里化、隐式转换] 柯里化概念及声明方式 (17:08)
4-3 [Actor、柯里化、隐式转换] 柯里化练习 (10:19)
4-4 [Actor、柯里化、隐式转换] 隐式转换和隐式参数 (10:54)
4-5 [Actor、柯里化、隐式转换] 隐式转换练习1-1 (14:11)
4-6 [Actor、柯里化、隐式转换] 隐式转换练习2-1 (17:56)
4-7 [Actor、柯里化、隐式转换] 泛型 (11:35)
4-8 [Actor、柯里化、隐式转换] upperbound (12:20)
4-9 [Actor、柯里化、隐式转换] viewbound (15:48)
4-10 [Actor、柯里化、隐式转换] contextbound (10:12)
5-1 [泛型、Akka] actor概念 (10:07)
5-2 [泛型、Akka] actor实例之创建actor (07:21)
5-3 [泛型、Akka] actor实例之消息的接收与发送(异步没有返回值) (19:27)
5-4 [泛型、Akka] actor实例之消息的接收与发送(同步有返回值) (04:29)
5-5 [泛型、Akka] actor实例之消息的接收与发送(异步有返回值) (08:11)
5-6 [泛型、Akka] actor实例之并行编程思想实现单词计数 (30:00)
5-7 [泛型、Akka] akka简介 (09:50)
5-8 [泛型、Akka] akka案例需求分析 (07:41)
5-9 [泛型、Akka] akka案例代码分析 (20:35)
6-1 [Spark集群安装、Spark任务提交] spark简介 (11:13)
6-2 [Spark集群安装、Spark任务提交] spark集群搭建、启动 (06:20)
6-3 [Spark集群安装、Spark任务提交] spark Shell.启动和提交任务 (11:46)
6-4 [Spark集群安装、Spark任务提交] spark Wordcount (18:55)
6-5 [Spark集群安装、Spark任务提交] 上传并执行任务 (12:28)
7-1 [RDD的基本概念、常用算子练习] rdd的概念 (12:50)
7-2 [RDD的基本概念、常用算子练习] 生成rdd的两种方式 (05:11)
7-3 [RDD的基本概念、常用算子练习] 两种类型的算子:transformation和actio (18:17)
7-4 [RDD的基本概念、常用算子练习] 常用算子练习1-1 (24:05)
7-5 [RDD的基本概念、常用算子练习] 常用算子练习2-1 (16:33)
8-1 [案例练习] 案例需求-求用户在某基站停留的时间-1 (12:32)
8-2 [案例练习] 案例实现-求用户在某基站停留的时间-2 (21:11)
8-3 [案例练习] 案例实现-求用户访问学科的子网页top (08:09)
8-4 [案例练习] 案例实现-求用户访问学科的子网页top3-chache (18:53)
9-1 [Spark集群启动流程和任务提交流程、案例练习] spark集群启动流程 (01)
9-2 [Spark集群启动流程和任务提交流程、案例练习] spark任务提交流程 (05:25)
9-3 [Spark集群启动流程和任务提交流程、案例练习] wordcount中创建了那些rdd (12:40)
9-4 [Spark集群启动流程和任务提交流程、案例练习] 案例分析实现-按照ip统计区域访问量 (21:33)
10-1 [RDD的依赖关系、Stage划分、任务的生成、自定义 排序] rdd之间的依赖关系 (10:48)
10-2 [RDD的依赖关系、Stage划分、任务的生成、自定义 排序] dag的生成和stage的划分 (11:07)
10-3 [RDD的依赖关系、Stage划分、任务的生成、自定义 排序] webui观察stage划分和任务的生成 (11:39)
10-4 [RDD的依赖关系、Stage划分、任务的生成、自定义 排序] 自定义二次排序 (22:46)
11-1 [Checkpoint、SparkSQL、Hive-on] checkpoint (15:39)
11-2 [Checkpoint、SparkSQL、Hive-on] sparksql介绍 (08:00)
11-3 [Checkpoint、SparkSQL、Hive-on] 创建dataframe (08:56)
11-4 [Checkpoint、SparkSQL、Hive-on] dataframe常用操作-dsl风格语法 (09:49)
11-5 [Checkpoint、SparkSQL、Hive-on] dataframe常用操作-sql风格语法 (03:10)
11-6 [Checkpoint、SparkSQL、Hive-on] 通过反射推断schema (17:39)
11-7 [Checkpoint、SparkSQL、Hive-on] 通过structtype直接指定schema (11:45)
11-8 [Checkpoint、SparkSQL、Hive-on] hive-on-spark (21:14)
12-1 [SparkStreaming、窗口操作、Spar-on] sparkstreaming简介 (08:43)
12-2 [SparkStreaming、窗口操作、Spar-on] sparkstreaming获取netcat产生的数据分析 (06:24)
12-3 [SparkStreaming、窗口操作、Spar-on] sparkstreaming实现按批次累加 (23:56)
12-4 [SparkStreaming、窗口操作、Spar-on] 窗口函数概念及使用场景 (17:04)
12-5 [SparkStreaming、窗口操作、Spar-on] 窗口函数实现wordcount (08:10)
12-6 [SparkStreaming、窗口操作、Spar-on] spark-on-yarn (25:37)
12-7 [SparkStreaming、窗口操作、Spar-on] 补充:sparkstreaming依赖 (33)
13-1 [Spark启动流程、Stage划分、任务生成、任务提交流程] 关于查看源码的一些介绍 (08:40)
13-2 [Spark启动流程、Stage划分、任务生成、任务提交流程] 导入源码 (04:57)
13-3 [Spark启动流程、Stage划分、任务生成、任务提交流程] 集群启动流程-master类 (22:52)
13-4 [Spark启动流程、Stage划分、任务生成、任务提交流程] 集群启动流程-worker类 (12:22)
13-5 [Spark启动流程、Stage划分、任务生成、任务提交流程] sparksubmit提交任务 (08:37)
13-6 [Spark启动流程、Stage划分、任务生成、任务提交流程] sparkcontext (16:45)
13-7 [Spark启动流程、Stage划分、任务生成、任务提交流程] 创建driveractor和clientactor的过程 (13:11)
13-8 [Spark启动流程、Stage划分、任务生成、任务提交流程] clientactor向master注册任务信息过程 (07:07)
13-9 [Spark启动流程、Stage划分、任务生成、任务提交流程] 任务调度的两种方式及master通知worker启动ex (10:34)
13-10 [Spark启动流程、Stage划分、任务生成、任务提交流程] executor向driveractor反向注册的过程 (05:57)
13-11 [Spark启动流程、Stage划分、任务生成、任务提交流程] rdd生成和stage划分 (20:20)
13-12 [Spark启动流程、Stage划分、任务生成、任务提交流程] 生成任务并提交 (05:57)
13-13 [Spark启动流程、Stage划分、任务生成、任务提交流程] task任务执行流程 (10:32)