Scala的函数式编程受到很多框架的青睐,例如Kafka、Spark、Flink等框架都是使用Scala作为底层源码开发语言,下面就带着大家7天极速掌握Scala语言。
课程安排:
1、快速了解Scala
2、Scala环境安装配置
3、Scala中的变量和数据类型
4、Scala中的表达式和循环
5、Scala集合体系之Set+List+Map
6、Scala中的Array和Tuple
7、Scala中函数的使用
8、Scala面向对象之类的使用
9、Scala面向对象之对象和伴生对象
10、Scala面向对象之apply和main的使用
11、Scala面向对象之接口的使用
12、Scala函数式编程之匿名函数和高阶函数的使用
13、Scala高级特性之模式匹配和隐式转换
【本周思考与讨论】
1、谈一下你对Scala语言的认知,Scala和Java有什么异同?Scala的语法格式和Python有没有相似之处?
2、Scala中的匿名函数和Java中的匿名函数有什么区别?
3、如何使用Scala代码读取MySQL数据库中的数据?
4、如何使用Scala实现单例设计模式?Scala中不支持静态关键字,如何实现单例?
5、Scala中的数据类型和Java中的数据类型有什么区别?
6、Scala代码和Java代码可以无缝集成吗?
7、分析一下Scala中的map和tuple 的区别?
8、Scala中的下划线 _ 有哪些作用?
Spark是目前企业中应用最广泛的计算引擎,盘它!实际案例详细分析Spark中的Transformation算子和Action算子使用,RDD持久化,共享变量使用,最后通过一个综合案例加深理解。
课程安排:
1、快速了解Spark
2、Spark 集群安装部署(Standalone+ON YARN)
3、Spark工作原理分析
4、什么是RDD
5、Spark架构原理
6、Spark项目开发环境配置
7、WordCount代码开发(Java+Scala)
8、Spark任务的三种提交方式
9、Spark开启historyServer服务
10、创建RDD的三种方式
11、Transformation和Action介绍
12、Transformation操作开发实战
13、Action操作开发实战
14、RDD持久化原理
15、RDD持久化开发实战
16、共享变量之Broadcast Variable的使用
17、共享变量之Accumulator的使用
18、案例实战:TopN主播统计
19、面试题
【本周思考与讨论】
1、谈一下你对Spark的理解,Spark和Hadoop之间是什么关系?
2、按照你的理解,在工作中最常用的是Spark的哪一种任务提交方式?说出你的理由?
3、你们目前工作中开发Spark代码是使用scala语言还是java语言?你倾向于使用哪一种语言?
4、在Spark程序中将处理的结果数据按照一定的规则,输出到多个不同的目录中,实现多路输出
5、如何使用Spark程序实现对WordCount的结果排序输出?
6、如何使用Spark实现自定义二次排序Key的开发?
7、Spark中join和cogroup的区别?
8、Spark如何读取多个不同目录下的数据(多路输入)?
9、介绍一下Spark的远程进程通信机制?
通过对Spark中的宽依赖、窄依赖、Stage、Shuffle机制进行详细分析,加深对Spark的理解,以及对Spark中的checkpoint机制通过源码层面进行深度剖析。
课程安排:
1、宽依赖和窄依赖
2、Stage的理解
3、Spark任务的三种提交模式
4、Shuffle介绍
5、三种Shuffle机制分析
6、checkpoint概述
7、checkpoint和持久化的区别
8、checkpoint代码开发和执行分析
9、checkpoint源码分析之写操作和读操作
10、Spark程序性能优化分析
11、高性能序列化类库Kryo的使用
12、持久化或者checkpoint
13、JVM垃圾回收调忧
14、提高并行度
15、数据本地化
16、算子优化
17、SparkSql快速上手使用
18、实战:SparkSQL实现TopN主播统计
【本周思考与讨论】
1、谈一下你对宽依赖和窄依赖的理解,以及Stage的个数和宽依赖之间的关系?
2、谈一下你对Spark性能优化的总结,到底哪种优化策略的效果最明显?
3、想要在Spark中直接操作MySQL应该如何实现?
4、如何在SparkSQL中使用自定义函数(UDF)?
5、算子优化在优化方案中常见吗?都适合在哪些场景中使用?
6、Spark中的repartition和coalesce有什么区别?
7、谈一下你对SparkSQL和Hive的理解?
8、分析一下SparkSQL的执行流程?
整合各个业务线数据,为各个业务系统提供统一&规范的数据出口。通过对项目的由来,需求、技术进行分析和选型,实现用户行为数据数仓开发。
课程安排:
1、项目效果展示
2、项目的由来
3、什么是数据仓库
4、数据仓库基础知识
5、数据仓库分层
6、典型数仓系统架构分析
7、技术选型
8、整体架构设计
9、服务器资源规划
10、生成用户行为数据【客户端数据】
11、生成商品订单相关数据【服务端数据】
12、采集用户行为数据【客户端数据】
13、Sqoop安装部署
14、Sqoop之数据导入功能
15、Sqoop之数据导出功能
16、采集商品订单相关数据【服务端数据】
17、用户行为数据数仓开发之ods层开发
18、用户行为数据数仓开发之ods层脚本抽取
19、用户行为数据数仓开发之dwd层开发
20、用户行为数据数仓开发之dwd层脚本抽取
21、用户行为数据数仓需求分析
22、用户行为数据数仓需求开发
23、用户行为数据数仓表和任务脚本总结
【本周思考与讨论】
1、谈一下你对数据仓库分层的理解,如果分成3层或者5层可以吗?
2、谈一下你对数仓技术选型的看法,请提出你的思路?
3、如何使用Sqoop将MySQL表数据导入Hive表中?
4、如何使用Sqoop将Hive表数据导出到MySQL表中?
5、开发数仓的时候有哪些注意事项?什么时候容易掉坑里面?
6、针对数仓脚本的开发心得,交流一下
7、什么是数据湖?谈一下你的理解?
基于商品订单数据开发数仓,详细分析了拉链表的由来和具体实现。使用数据可视化工具Zepplin实现数据展现,使用Azkaban调度器实现任务依赖调度。
课程安排:
1、商品订单数据数仓开发之ods层和dwd层
2、商品订单数据数仓需求分析与开发
3、什么是拉链表
4、如何制作拉链表
5、【实战】基于订单表的拉链表实现
6、拉链表的性能问题分析
7、商品订单数据数仓表和任务脚本总结
8、数据可视化之Zepplin的安装部署和参数配置
9、数据可视化之Zepplin的使用
10、任务调度之Crontab调度器的使用
11、任务调度之Azkaban的安装部署
12、任务调度之Azkaban提交独立任务
13、任务调度之Azkaban提交依赖任务
14、任务调度之在数仓中使用Azkaban
15、项目优化
【本周思考与讨论】
1、使用Hive SQL可以实现数据清洗,使用Spark代码也能实现数据清洗,有什么区别吗?
2、使用Spark代码实现ods层数据清洗工作,替换掉之前的Hive SQL
3、针对用户信息表,有必要制作成拉链表吗?说出你的理由?
4、Crontab和Azkaban都能实现任务调度,应该如何技术选型呢?
5、如何使用Azkaban实现调度漏斗分析需求相关任务?
6、Hive和Impala有什么异同?谈一谈你对Impala的理解?
7、Ooize和Azkaban都是大数据中常用的任务调度工具,谈一下你对Ooize的看法?