![3296c8723f7614ec0c8dcc3884fd996f.png](https://i-blog.csdnimg.cn/blog_migrate/e01e834bf96062ec1a410adba2856389.png)
高职高专大数据技术与应用专业系列教材
本书摒弃了传统IT教材结构,采用更加符合学习者认知规律的项目化、任务驱动方式编写,包含7大项目、42个任务、200余个实例。
本书提供了大量配套资源,包括搭建好运行环境的虚拟机(Linux + Spark + Hadoop+其他组件)、程序代码、授课PPT、教学日历、实验数据、软件包、课后习题答案等(读者可通过百度网盘下载:https://pan.baidu.com/s/1p4nDYT8DO4AjtSWxFwoBaA,提取码:eixn);
建议读者下载后,与本书同步完成各个任务点,坚持“在Spark实践中学习Spark理论,Spark理论升华Spark实践”。对于Spark学习,读者需要了解Linux基本命令,包括用户、文件、目录、解压等相关命令;
建议初学者使用Ubuntu系统,因为Ubuntu系统提供了强大的桌面功能(与Windows类似),这样可以降低学习成本,省去诸多不便,将主要精力放到Spark上。
向上滑动阅览
目 录
项目一 搭建Spark环境1
项目概述1
项目演示1
思维导图2
任务1.1 认识大数据2
1.1.1 大数据时代2
1.1.2 大数据的普遍特征——4V3
1.1.3 大数据的来源5
1.1.4 大数据的处理过程5
任务1.2 搭建Hadoop环境6
1.2.1 认识Hadoop生态体系7
1.2.2 Hadoop环境的搭建8
1.2.3 Hadoop平台的初步体验12
任务1.3 认识Spark13
1.3.1 初识Spark13
1.3.2 Spark中的运行框架与过程16
1.3.3 Spark与Hadoop的比较17
任务1.4 搭建Spark环境19
1.4.1 Spark部署模式19
1.4.2 Spark本地模式环境搭建20
1.4.3 Spark的简单使用21
1.4.4 Virtual Box中导入虚拟机22
项目小结24
课后练习24
能力拓展25
项目二 编写Scala程序处理4S店数据26
项目概述26
项目演示26
思维导图27
任务2.1 Scala的安装与体验27
2.1.1 Scala简介27
2.1.2 Scala的特性28
2.1.3 Scala的下载与安装28
2.1.4 轻松编写第一个Scala程序29
2.1.5 在网页上编写Scala程序31
任务2.2 查找并输出店铺的相关信息32
2.2.1 数据类型32
2.2.2 变量与常量32
2.2.3 Scala中的运算符34
2.2.4 if条件语句36
2.2.5 Scala中的函数37
2.2.6 使用函数查询4S店信息39
任务2.3 统计广州4S店的数量40
2.3.1 for循环40
2.3.2 while、do...while循环41
2.3.3 数组42
2.3.4 使用循环统计广州4S店的数量43
任务2.4 分组统计4S店信息43
2.4.1 元组43
2.4.2 List44
2.4.3 Set46
2.4.4 Map47
2.4.5 高阶函数48
2.4.6 使用集合分组统计4S店的信息51
任务2.5 编写独立应用程序对店铺数据进行
分析52
2.5.1 类与对象52
2.5.2 继承53
2.5.3 特质54
2.5.4 单例对象与伴生对象55
2.5.5 模式匹配与样例类56
2.5.6 文件的读/写57
2.5.7 读取数据文件对4S店数据
进行分析58
项目小结59
课后练习60
能力拓展60
项目三 Spark RDD分析交通违章记录61
项目概述61
项目演示61
思维导图62
任务3.1 根据交通违章数据创建RDD62
3.1.1 认识RDD62
3.1.2 从Seq集合创建RDD63
3.1.3 从外部存储创建RDD65
3.1.4 从交通违法数据文件创建RDD67
任务3.2 找出扣分最高的交通违法条目67
3.2.1 map操作68
3.2.2 使用collect查看元素69
3.2.3 使用take(N)方法查询RDD中的
N个值69
3.2.4 使用first操作得到第一个
元素值69
3.2.5 flatMap操作70
3.2.6 使用sortBy操作对RDD的
元素进行排序70
3.2.7 找出扣分最多的三种交通
违法条目71
任务3.3 查找某车辆的违章记录72
3.3.1 filter操作过滤RDD的元素72
3.3.2 distinct操作进行元素去重73
3.3.3 union操作进行RDD合并73
3.3.4 intersection操作求两个RDD的
共同元素74
3.3.5 subtract操作求两个RDD的补75
3.3.6 cartesian操作求两个RDD的
笛卡尔积75
3.3.7 查找车辆AK0803的违章记录75
任务3.4 查找违章3次以上车辆76
3.4.1 键值对RDD76
3.4.2 keys操作得到一个新RDD77
3.4.3 values操作得到一个新RDD77
3.4.4 lookup查找value77
3.4.5 groupByKey78
3.4.6 reduceByKey78
3.4.7 mapValues对键值对RDD的
value进行处理79
3.4.8 sortByKey排序79
3.4.9 查找违章3次以上车辆80
任务3.5 查找累计扣12分以上车辆信息80
3.5.1 zip操作将两个RDD组合成
键值对RDD81
3.5.2 join连接两个RDD81
3.5.3 rightOuterJoin82
3.5.4 leftOuterJoin82
3.5.5 fullOuterJoin82
3.5.6 查找累计扣12分以上
车辆信息83
任务3.6 各类文件的读/写操作85
3.6.1 读/写文本文件85
3.6.2 读/写JSON格式的数据86
3.6.3 读/写CSV、TSV格式文件88
3.6.4 读/写SequenceFile文件90
3.6.5 读取文件进行词频统计并
存储结果91
3.6.6 将违章信息保存为TSV
格式文件92
项目小结94
课后练习94
能力拓展95
项目四 Spark SQL处理结构化学生数据97
项目概述97
项目演示97
思维导图98
任务4.1 初识结构化数据处理工具
Spark SQL98
4.1.1 Spark SQL的产生98
4.1.2 Spark SQL的特点99
4.1.3 体验Spark SQL不同版本的
操作差异99
任务4.2 认识DataFrame、Dataset
数据类型100
4.2.1 认识DataFrame100
4.2.2 认识Dataset101
4.2.3 RDD、DataFrame、Dataset
三者的区别102
任务4.3 由学生信息创建DataFrame102
4.3.1 由学生信息JSON文件
创建DataFrame102
4.3.2 printSchema打印DataFrame的
数据模式103
4.3.3 show方法显示DataFrame中的
数据103
4.3.4 获取DataFrame若干行记录105
4.3.5 获取DataFrame所有记录106
任务4.4 Spark SQL分析学生信息(1)106
4.4.1 where方法106
4.4.2 filter筛选相关数据108
4.4.3 select方法108
4.4.4 selectExpr方法109
4.4.5 获取指定的Column109
4.4.6 去掉指定的列110
任务4.5 Spark SQL分析学生信息(2)110
4.5.1 limit方法获取前N行110
4.5.2 orderBy、sort排序111
4.5.3 groupBy操作112
4.5.4 distinct方法去重操作113
4.5.5 agg操作114
4.5.6 join操作114
任务4.6 Spark SQL分析学生信息(3)115
4.6.1 stat方法获取指定字段
统计信息115
4.6.2 intersect方法获取两个
DataFrame的共有记录116
4.6.3 操作字段名116
4.6.4 处置空值117
任务4.7 SQL语法风格处理学生信息118
4.7.1 Spark SQL中的DSL风格与
SQL风格118
4.7.2 创建临时视图119
4.7.3 按条件查找学生信息119
4.7.4 分组统计学生信息119
4.7.5 用户自定义函数判断学生
是否成年120
任务4.8 其他类型数据创建DataFrame121
4.8.1 内存数据创建DataFrame121
4.8.2 JSON文件创建DataFrame122
4.8.3 CSV数据创建DataFrame122
4.8.4 Parquet数据创建DataFrame122
4.8.5 DataFrame数据保存到文件中123
任务4.9 RDD、DataFrame与Dataset的
相互转换123
4.9.1 使用反射机制由RDD生成
DataFrame123
4.9.2 以编程方式由RDD生成
DataFrame124
4.9.3 DataFrame转换为RDD126
4.9.4 DataFrame与Dataset之间的
转换126
任务4.10 通过JDBC连接MySQL
数据库127
4.10.1 准备工作127
4.10.2 读取MySQL表格创建
DataFrame128
4.10.3 DataFrame数据写入MySQL129
任务4.11 Spark SQL读/写Hive数据130
4.11.1 编译源代码、创建支持Hive的
版本130
4.11.2 读取Hive数据130
项目小结131
课后练习132
能力拓展132
项目五 Spark编程进阶134
项目概述134
项目演示134
思维导图134
任务5.1 搭建IntelliJ IDEA开发环境135
5.1.1 下载安装IntelliJ IDEA135
5.1.2 创建工程141
5.1.3 修改pom.xml的内容144
5.1.4 新建Scala文件、编写程序146
5.1.5 在IDEA中运行程序147
5.1.6 工程打包、提交集群运行148
任务5.2 IDEA下用Spark RDD分析
Sogou日志149
5.2.1 数据说明150
5.2.2 需求分析150
5.2.3 IDEA下编写程序151
5.2.4 运行程序153
任务5.3 IDEA下用Spark SQL分析
疫苗流向数据153
5.3.1 数据说明153
5.3.2 需求分析154
5.3.3 IDEA下编写程序154
5.3.4 运行程序156
任务5.4 使用RDD缓存机制
提升效率157
5.4.1 Spark 缓存机制概述158
5.4.2 Spark RDD缓存体验159
任务5.5 认识RDD广播变量和累加器162
5.5.1 共享变量162
5.5.2 广播变量162
5.5.3 累加器164
任务5.6 理解RDD的依赖关系165
5.6.1 Spark RDD的执行流程165
5.6.2 RDD间的依赖关系166
5.6.3 检查点机制167
项目小结169
课后练习169
能力拓展169
项目六 Spark Streaming处理流数据171
项目概述171
项目演示171
思维导图171
任务6.1 初识流数据处理模块
Spark Streaming172
6.1.1 Spark Streaming的产生172
6.1.2 Spark Streaming的工作原理173
6.1.3 用Spark-Shell编写第一个
Spark Streaming程序174
6.1.4 用IDEA工具写第一个
Spark Streaming程序177
6.1.5 编写Spark Streaming程序的
基本步骤178
任务6.2 读取基础数据源到DStream中178
6.2.1 读取文件流178
6.2.2 读取套接字流180
6.2.3 读取RDD队列流180
任务6.3 读取Kafka数据到DStream中182
6.3.1 Spark Streaming支持的高级
数据源182
6.3.2 了解Kafka的工作原理182
6.3.3 Kafka的安装与测试183
6.3.4 编写Spark Streaming程序找出
超速车辆185
任务6.4 DStream的转换操作187
6.4.1 DStream无状态转换操作187
6.4.2 DStream有状态转换操作190
任务6.5 DStream的输出操作193
6.5.1 DStream写入到文本文件194
6.5.2 DStream写入到MySQL
数据库的方法分析195
6.5.3 车辆定位数据写入到
MySQL数据库196
任务6.6 Spark Streaming实时处理
电商用户行为数据198
6.6.1 数据集说明与准备工作199
6.6.2 任务整体思路200
6.6.3 Kafka的相关准备工作200
6.6.4 创建MySQL数据库、
数据库表200
6.6.5 数据写入Kafka主题中201
6.6.6 Spark Streaming处理userbehavior
主题中的数据202
6.6.7 运行结果分析204
项目小结204
课后练习205
能力拓展205
项目七 Spark ML实现电影推荐206
项目概述206
项目演示206
思维导图206
任务7.1 初识Spark机器学习207
7.1.1 机器学习概述207
7.1.2 机器学习的应用场景208
7.1.3 Spark机器学习库208
任务7.2 使用Spark ML进行数据
特征提取与转换209
7.2.1 特征提取209
7.2.2 特征转换212
任务7.3 Spark分类与聚类215
7.3.1 朴素贝叶斯分类215
7.3.2 k-means聚类218
任务7.4 使用协同过滤算法进行
电影推荐220
7.4.1 推荐算法原理与分类220
7.4.2 利用Spark ML实现电影推荐221
项目小结223
课后练习223
能力拓展224
参考文献226
![ed538bff52e064da29cf91bb20ba5126.png](https://i-blog.csdnimg.cn/blog_migrate/a767321fc0d15e7242940cdfc88f5740.jpeg)
![735735723c96edcc27acdbce3f0450b3.png](https://i-blog.csdnimg.cn/blog_migrate/71d431a0a6fd360194b6855a5905f056.png)
![7473bb8e679ebe809e5ef39ae60fe8d2.png](https://i-blog.csdnimg.cn/blog_migrate/fe3f8975a90471407615227ab18f89d5.jpeg)
高职大数据技术与应用专业课程体系
![8436d3bc7025c89afca070053a9a668f.gif](https://i-blog.csdnimg.cn/blog_migrate/20d8c784ac9e5cf5895b9439ae358d33.gif)
![22f6c6ff69216cb6e141a9e7f3fa40e2.png](https://i-blog.csdnimg.cn/blog_migrate/00988d669151d10b034e0cfd1ba2b6a1.png)
![8986de3458bca317bda8ad01ad5c5459.png](https://i-blog.csdnimg.cn/blog_migrate/550d2befc2d098e7c350650c7f3b43e4.png)
(书中序言有详细介绍)
心理学150个效应大全
长尾效应
英文名称LongTailEffect。“头”(head)和“尾”(tail)是两个统计学名词。正态曲线中间的突起部分叫“头”;两边相对平缓的部分叫“尾”。新竞争力从人们需求的角度来看,大多数的需求会集中在头部,而这部分我们可以称之为流行,而分布在尾部的需求是个性化的,零散的小量的需求。而这部分差异化的,少量的需求会在需求曲线上面形成一条长长的“尾巴”,而所谓长尾效应就在于它的数量上,将所有非流行的市场累加起来就会形成一个比流行市场还大的市场。
![44148336382a4ad4c4aee661fff8cab5.png](https://i-blog.csdnimg.cn/blog_migrate/afa0f14aa03e8009a574259673e11177.jpeg)
(搜狗百科)