子雨大年夜数据之Spark入门教程(Scala版)

大年夜数据进修道路图

子雨大年夜数据之Spark入门
扫一扫拜访本博客
【版权声明】博客内容由厦门大年夜学数据库实验室具有版权,未经许可,请勿转载!版权一切,侵权必究!

Spark最后出生于美国加州大年夜学伯克利分校(UC Berkeley)的AMP实验室,是一个可应用于大年夜范围数据处理的快速、通用引擎。2013年,Spark参加Apache孵化器项目后,开端取得迅猛的生长,如今已成为Apache软件基金会最重要的三大年夜分布式计算体系开源项目之一(即Hadoop、Spark、Storm)。Spark最后的设计目标是使数据分析更快——不只运转速度快,也要能快速、轻易地编写法式榜样。为了使法式榜样运转更快,Spark供给了内存计算,增添了迭代计算时的IO开支;而为了使编写法式榜样更加轻易,Spark应用简洁、优雅的Scala说话编写,基于Scala供给了交互式的编程体验。固然,Hadoop已成为大年夜数据的现实标准,但其MapReduce分布式计算模型仍存在诸多缺点,而Spark不只具有Hadoop MapReduce所具有的长处,且处理了Hadoop MapReduce的缺点。Spark正以其构造一体化、功能多元化的优势逐步成为当本大年夜数据范畴最热点的大年夜数据计算平台。

Spark支撑应用Scala、Java、Python和R说话停止编程。由于Spark采取Scala说话停止开辟,是以,建议采取Scala说话停止Spark应用法式榜样的编写。Scala是一门现代的多范式编程说话,腻滑地集成了面向对象和函数式说话的特点,旨在以简洁、优雅的方法来表达经常使用编程形式。Scala说话的称号来自于“可舒展的说话”,从写个小脚本到建立个大年夜体系的编程义务都可胜任。Scala运转于Java平台(JVM,Java 虚拟机)上,并兼容现有的Java法式榜样。

然则,Scala编程说话的进修曲线比拟较较陡峭,特别是,今朝很多高校教授教化大年夜多采取Java等面向对象说话,而Scala则融入了很多函数式编程思想,面向对象编程和函数式编程,是两种截然不合的编程风格,是以,给教员和先生进修Scala说话形成了很大年夜的妨碍。

笔者作为“中国高校大年夜数据课程公共办事平台”的扶植者和担任人,一向努力于为全国高校教员和先生快速进修大年夜数据知识供给帮助,降低大年夜数据知识进修门槛,大年夜幅节约大年夜数据进修时间,加快推动全国高校大年夜数据课程的大年夜范围普及。“中国高校大年夜数据课程公共办事平台”(平台主页)今朝曾经生长为国际高校大年夜数据教授教化有名品牌,年拜访量逾越100万次,为教员和先生供给了大年夜数据教授教化资本一站式办事,包含课程教材、教材PPT、进修指南、备课指南、讲课视频、实验指南、技巧材料和师资培训等。在2013年5月到2016年9月,平台重点扶植了与《大年夜数据技巧道理与应用》(教材官网)入门级大年夜数据教材配套的各类教授教化资本,为高校开设大年夜数据导论课程奠定了较好的基本。

然则,《大年夜数据技巧道理与应用》课程只能作为导论级课程,高校课程体系还应当包含更多高等课程,比如机械进修、Spark、NoSQL、R说话、Hadoop高等编程、流数据处理、大年夜数据应用与案例等。是以,从2016年9月开端,笔者开端带领厦门大年夜学数据库实验室团队,扶植“Spark入门教程”教授教化资本,作为大年夜数据进修探路前锋,寻觅出一条进修Spark技巧的捷径,降低进修难度,节俭进修时间,帮助高校教员顺利开设Spark课程。

开辟Spark应用法式榜样时,可以采取Scala、Python、Java和R等说话,首选说话是Scala,由于Spark这个软件本身就是应用Scala说话开辟的,采取Scala说话编写Spark应用法式榜样,可以取得最好的性能。关于采取哪一种说话编写Spark应用法式榜样,这里强调两点:(1)Java代码太繁琐。在大年夜数据应用处景中,不太合适应用Java,由于,完成异样的义务,Scala只须要一行代码,而Java则能够须要10行代码;并且,Scala说话可以支撑交互式编程,大年夜大年夜进步了法式榜样开辟效力,而Java则不支撑交互式履行,必须编译今后运转。(2)Python说话并发性能不好。在并发性能方面,Scala要明显优于Python,并且,Scala是静态类型,可以在编译阶段就抛掉足误,便于开辟大年夜型大年夜数据项目,另外,Scala兼容Java,运转在JVM上,可以直接应用Java中的Hadoop API来和Hadoop停止交互,然则,Python与Hadoop之间的交互异常蹩脚,平日都须要第三方库(比如hadoopy)。

本教程采取Scala说话编写Spark应用法式榜样,在知识安排上,起首进修Scala编程,然后再进修Spark应用法式榜样开辟。假设想进修基于Python说话的Spark入门教程,请拜访《子雨大年夜数据之Spark入门教程(Python版)》。须要解释的是,进修过基于Scala说话的Spark法式榜样开辟办法今后,有了这个基本,很轻松便可以学会基于Python说话的Spark法式榜样开辟办法。

点击这里不雅看与本在线教程配套的林子雨师长教员讲课视频《Spark编程基本》
(文字教程和视频教程二者各有长处,互为弥补,二者可以结合应用。有些内容只涌如今文字教程中,视频中没有讲,有些内容则是只涌如今视频中,文字教程没有讲)

[教程目次]

林子雨、赖永炫、陶继平 编著《Spark编程基本(Scala版)》纸质教材(拜访教程官网)曾经于2018年8月1日由人平易近邮电出版社出版发行,重要用于高校大年夜数据课程教授教化,敬请存眷!

第一部分:快学Scala

第一章 Scala简介
第二章 Scala装置
第三章 Scala基本
第1节 声明值和变量
第2节 根本数据类型和操作
第3节 Range
第4节 打印语句
第5节 读写文件
第四章 控制构造
第1节 if条件表达式
第2节 while轮回
第3节 for轮回
第五章 数据构造
第1节 数组
第2节 列表
第3节 元组
第4节 集
第5节 映照
第6节 迭代器
第六章 类
第七章 对象
第八章 持续
第九章 特质
第十章 形式婚配
第十一章 函数式编程
第1节 函数定义和高阶函数
第2节 针对集合的操作
第2.1节 遍历操作
第2.2节 map操作和flatMap操作
第2.3节 filter操作
第2.4节 reduce操作
第2.5节 fold操作
第3节 函数式编程实例WordCount

Spark有不合的版本,并且版本一向在升级,我们只需进修个中一个版本便可。截至2017年3月,Spark曾经更新到2.0以上版本。
下面的第二部分是Spark速成(Spark2.1.0版本),第三部分是Spark速成(Spark1.6.2版本),读者可以选择个中一个版本进修,建议进修最新2.1.0版本。

第二部分:Spark速成(Spark2.1.0版本)

林子雨、赖永炫、陶继平 编著《Spark编程基本(Scala版)》纸质教材(拜访教程官网)曾经于2018年8月1日由人平易近邮电出版社出版发行,重要用于高校大年夜数据课程教授教化,敬请存眷!
假设碰到厦大年夜校园网保护没法拜访,在没法拜访时代,可以拜访百度云盘上的大年夜数据教授教化应急盘
Spark官网截至2017年3月发布的最新版本是Spark2.1.0,建议读者进修Spark2.1.0版本。
第1章 Spark的设计与运转道理
1.1 Spark简介
1.2 Spark运转架构
1.3 RDD的设计与运转道理
1.4 Spark的安排形式
第2章 Spark的装置与应用
2.1 Spark的装置与应用
2.2 第一个Spark应用法式榜样:WordCount
2.3 应用开辟对象Intellij idea编写Spark应用法式榜样
2.3.1 应用开辟对象Intellij idea编写Spark应用法式榜样(Scala+Maven)
2.3.2 应用开辟对象Intellij idea编写Spark应用法式榜样(Scala+SBT)
2.4 应用开辟对象Eclipse编写Spark应用法式榜样
2.4.1 应用开辟对象Eclipse编写Spark应用法式榜样(Scala+Maven)
2.4.2 应用开辟对象Eclipse编写Spark应用法式榜样(Scala+SBT)
2.5 Spark集群情况搭建
2.6 在集群上运转Spark应用法式榜样
第3章 Spark编程基本
3.1 RDD编程
3.2 键值对RDD
3.3 共享变量
3.4 数据读写
3.4.1 文件数据读写
3.4.2 读写HBase数据

第4章 Spark SQL
4.1 Spark SQL简介
4.2 DataFrame与RDD的差别
4.3 DataFrame的创建
4.4 从RDD转换取得DataFrame
[第4.5节 读取和保存数据]
4.5.1 读写Parquet(DataFrame)
4.5.2 经过过程JDBC连接数据库(DataFrame)
4.5.3 连接Hive读写数据

第5章 Spark Streaming
5.1 流计算简介
5.2 Spark Streaming简介
第5.3节 DStream操作
5.3.1 DStream操作概述
第5.3.2节 输入源
第5.3.2.1节 根本输入源
5.3.2.1.1 文件流
5.3.2.1.2 套接字流
5.3.2.1.3 RDD队列流
第5.3.2.2节 高等数据源
5.3.2.2.1 Apache Kafka
5.3.2.2.2 Apache Flume
5.3.3 转换操作
5.3.4 输入操作

第6章 Spark MLlib
6.1 Spark MLlib简介
6.2 机械进修任务流
6.2.1 机械进修任务流(ML Pipelines)
6.2.2 构建一个机械进修任务流
6.3 特点抽取、转化和选择
6.3.1 特点抽取:TF-IDF
6.3.2 特点抽取:Word2Vec
6.3.3 特点抽取:CountVectorizer
6.3.4 特点变换:标签和索引的转化
6.3.5 特点拔取:卡方选择器
6.4 分类与回归
6.4.1 逻辑斯蒂回归分类器
6.4.2 决定计划树分类器
6.5 聚类算法
6.4.1 KMeans聚类算法
6.4.2 高斯混淆模型(GMM)聚类算法
6.6 推荐算法
6.5.1 协同过滤算法
6.7 机械进修参数调优
6.7.1 模型选择和超参数调剂

第7章 Spark GraphX(选修内容,可以不学)
7.1 图计算简介
7.2 Spark GraphX 简介
7.3 Spark GraphX 图操作
7.4 Spark GraphX算法实例

第8章 Structured Streaming(选修内容,可以不学)
8.1 Structured Streaming简介
8.2 Structured Streaming操作概述(包含读取搜集流)
8.3 Structured Streaming读取文件流

(备注:前面我们都是在单机或伪分布式情况下操作,如今可以测验测验在真实的分布式集群情况下运转Spark,由于Spark集群下编程会招致复杂性大年夜大年夜增长,所以,下面内容可以自在选择能否进修)
第9章 Spark集群搭建及法式榜样运转
9.1 Spark集群情况搭建
9.2 在集群上运转Spark应用法式榜样

第三部分:Spark速成(Spark1.6.2版本)

本部分外容是Spark1.6.2版本,建议进修下面第二部分的Spark2.1.0版本。
第一章 Spark简介
第二章 Spark装置
第三章 Spark运转架构
第四章 RDD的设计与运转道理
第五章 Spark的安排形式
第六章 第一个Spark应用法式榜样:WordCount
第七章 RDD编程
[第八章] 键值对RDD
[弥补] 共享变量
第九章 数据读写
[第9.1节] 文件数据读写
第9.2节 读写HBase数据
[第十章] Spark SQL
第10.1节 Spark SQL简介
第10.2节 DataFrame
第10.2.1节 DataFrame与RDD的差别
第10.2.2节 DataFrame的创建
第10.2.3节 从RDD转换取得DataFrame
第10.2.4节 读取和保存数据
第10.2.4.1节 读写Parquet
第10.2.4.2节 经过过程JDBC连接数据库
第10.2.4.3节 连接Hive读写数据

[第十一章]Spark Streaming
第11.1节 流计算简介
第11.2节 Spark Streaming简介
第11.3节 DStream操作
第11.3.0节 DStream操作概述
第11.3.1节 输入源
第11.3.1.1节 根本输入源
第11.3.1.1.1节 文件流
第11.3.1.1.2节 套接字流
第11.3.1.1.3节 RDD队列流
第11.3.1.2节 高等数据源
第11.3.1.2.1节 Apache Kafka
第11.3.2节 转换操作
第11.3.3节 输入操作

第十二章 Spark MLlib
第12.1节 Spark MLlib简介
第12.2节 spark.mllib库
第12.2.1节 MLlib根本数据类型(1)
第12.2.2节 MLlib根本数据类型(2)
第12.2.3节 根本的统计对象(1)
第12.2.4节 根本的统计对象(2)
第12.2.5节 降维操作
第12.2.5.1节 奇怪值分化(SVD)
第12.2.5.2节 主成分分析(PCA)
第12.2.6节 分类与回归
第12.2.6.1节 逻辑斯蒂回归的分类器
第12.2.6.2节 决定计划树分类器
第12.2.6.3节 支撑向量机SVM分类器
第12.2.7节 推荐算法
第12.2.7.1节 协同过滤算法
第12.2.8节 聚类算法
第12.2.8.1节 KMeans聚类算法

第12.3节 spark.ml库
第12.3.1节 任务流
第12.3.1.1节 机械进修任务流
第12.3.1.2节 构建一个机械进修任务流
第12.3.2节 特点抽取、转化和选择
第12.3.2.1节 特点抽取:TF-IDF
第12.3.2.2节 特点抽取:CountVectorizer
第12.3.2.3节 特点抽取:Word2Vec
第12.3.2.4节 标签和索引的转化
第12.3.3节 分类与回归
第12.3.3.1节 逻辑斯蒂回归的分类器
第12.3.3.2节 决定计划树分类器

(备注:前面我们都是在单机或伪分布式情况下操作,如今可以测验测验在真实的分布式集群情况下运转Spark,由于Spark集群下编程会招致复杂性大年夜大年夜增长,所以,下面内容可以自在选择能否进修)
第十三章 Spark集群
第13.1 Spark集群情况搭建
第13.2 在集群上运转Spark应用法式榜样
(以上是Spark1.6.2教程一切内容,不再持续更新,请进修第二部分的Spark2.1.0版本教程)

厦门大年夜学研究生课程《大年夜数据处理技巧Spark》

迎接点击这里拜访林子雨师长教员主讲厦门大年夜学研究生课程《大年夜数据处理技巧Spark》2017春季学期班级主页,包含教材PPT等材料

Spark课程综合实验案例

案例1:淘宝双11数据分析与猜想

Spark课程实验案例:淘宝双11数据分析与猜想课程案例,由厦门大年夜学数据库实验室团队开辟,旨在满足全国高校大年夜数据教授教化对实验案例的急切需求。本案例触及数据预处理、存储、查询和可视化分析等数据处理全流程所触及的各类典范操作,涵盖Linux、MySQL、Hadoop、Hive、Sqoop、Eclipse、ECharts、Spark等体系和软件的装置和应用办法。案例合适高校(高职)大年夜数据教授教化,可以作为先生进修大年夜数据课程后的综合实际案例。经过过程本案例,将有助于先生综合应用大年夜数据课程知识和各类对象软件,完成数据全流程操作。各个高校可以根据本身教授教化实际需求,对本案例停止弥补完美。
点击这里拜访案例主页

案例2:Spark+Kafka构建及时分析Dashboard

大年夜数据课程实验案例:Spark+Kafka构建及时分析Dashboard案例,由厦门大年夜学数据库实验室团队开辟,旨在满足全国高校大年夜数据教授教化对实验案例的急切需求。本案例触及数据预处理、消息队列发送和接收消息、数据及时处理、数据及时推送和及时展示等数据处理全流程所触及的各类典范操作,涵盖Linux、Spark、Kafka、Flask、Flask-SocketIO、Highcharts.js、sockert.io.js、PyCharm等体系和软件的装置和应用办法。案例合适高校(高职)大年夜数据教授教化,可以作为先生进修大年夜数据课程后的综合实际案例。经过过程本案例,将有助于先生综合应用大年夜数据课程知识和各类对象软件,完成数据全流程操作。各个高校可以根据本身教授教化实际需求,对本案例停止弥补完美。
点击这里拜访案例主页

案例3:厦门房租信息分析展示(pycharm+python爬虫+pyspark+pyecharts)

从厦门小鱼网爬取租房租金信息,然后应用spark的python版本停止简单分析,并应用echarts的python版本展示分析成果。本案例触及数据收集和预处理、数据分析和数据可视化等数据处理全流程所触及的各类典范操作,涵盖Linux、Spark、PyCharm、Python、Echarts等体系和软件的装置和应用办法。案例合适高校(高职)大年夜数据教授教化,可以作为先生进修大年夜数据课程后的综合实际案例。经过过程本案例,将有助于先生综合应用大年夜数据课程知识和各类对象软件,完成数据全流程操作。各个高校可以根据本身教授教化实际需求,对本案例停止弥补完美。
点击这里拜访案例主页


点击这里检查大年夜数据进修道路图(大年夜数据进修的最好途径)