本文从Spark的基本特点出发,借助大量例子详细介绍了关于使用Python调用Spark新特性的方法、处理结构化及非结构化数据的方法、使用PySpark中基本可用数据类型的方法、生成机器学习模型方法、进行图像操作以及阅读串流数据的方法等等新兴技术内容。
封面图
目录
- 译者序
- 序
- 前言
- 关于作者
- 第1章了解Spark1
- 1.1什么是Apache Spark1
- 1.2Spark作业和API2
- 1.2.1执行过程2
- 1.2.2弹性分布式数据集3
- 1.2.3DataFrame4
- 1.2.4Dataset5
- 1.2.5Catalyst优化器5
- 1.2.6钨丝计划5
- 1.3Spark 2.0的架构6
- 1.3.1统一Dataset和DataFrame7
- 1.3.2SparkSession介绍8
- 1.3.3Tungsten Phase 28
- 1.3.4结构化流10
- 1.3.5连续应用10
- 1.4小结11
- 第2章弹性分布式数据集12
- 2.1RDD的内部运行方式12
- 2.2创建RDD13
- 2.2.1Schema 14
- 2.2.2从文件读取14
- 2.2.3Lambda表达式15
- 2.3全局作用域和局部作用域16
- 2.4转换17
- 2.4.1.map(...)转换17
- 2.4.2.filter(...)转换18
- 2.4.3.flatMap(...)转换18
- 2.4.4.distinct(...)转换18
- 2.4.5.sample(...)转换19
- 2.4.6.leftOuterJoin(...)转换19
- 2.4.7.repartition(...)转换20
- 2.5操作20
- 2.5.1.take(...)方法21
- 2.5.2.collect(...)方法21
- 2.5.3.reduce(...)方法21
- 2.5.4.count(...)方法22
- 2.5.5.saveAsTextFile(...)方法22
- 2.5.6.foreach(...)方法23
- 2.6小结23
- 第3章DataFrame24
- 3.1Python到RDD之间的通信24
- 3.2Catalyst优化器刷新25
- 3.3利用DataFrame加速PySpark27
- 3.4创建DataFrame28
- 3.4.1生成自己的JSON数据29
- 3.4.2创建一个DataFrame29
- 3.4.3创建一个临时表30
- 3.5简单的DataFrame查询31
- 3.5.1DataFrame API查询32
- 3.5.2SQL查询32
- 3.6RDD的交互操作33
- 3.6.1使用反射来推断模式33
- 3.6.2编程指定模式34
- 3.7利用DataFrame API查询35
- 3.7.1行数35
- 3.7.2运行筛选语句35
- 3.8利用SQL查询36
- 3.8.1行数36
- 3.8.2利用where子句运行筛选语句 36
- 3.9DataFrame场景——实时飞行性能38
- 3.9.1准备源数据集38
- 3.9.2连接飞行性能和机场39
- 3.9.3可视化飞行性能数据40
- 3.10Spark数据集(Dataset)API41
- 3.11小结42
- 第4章准备数据建模43
- 4.1检查重复数据、未观测数据和异常数据(离群值)43
- 4.1.1重复数据43
- 4.1.2未观测数据46
- 4.1.3离群值50
- 4.2熟悉你的数据 51
- 4.2.1描述性统计52
- 4.2.2相关性54
- 4.3可视化55
- 4.3.1直方图55
- 4.3.2特征之间的交互58
- 4.4小结60
- 第5章 MLlib介绍61
- 5.1包概述61
- 5.2加载和转换数据62
- 5.3了解你的数据65
- 5.3.1描述性统计66
- 5.3.2相关性67
- 5.3.3统计测试69
- 5.4创建最终数据集70
- 5.4.1创建LabeledPoint形式的RDD70
- 5.4.2分隔培训和测试数据71
- 5.5预测婴儿生存机会71
- 5.5.1MLlib中的逻辑回归71
- 5.5.2只选择最可预测的特征72
- 5.5.3MLlib中的随机森林73
- 5.6小结74
- 第6章ML包介绍75
- 6.1包的概述75
- 6.1.1转换器75
- 6.1.2评估器78
- 6.1.3管道80
- 6.2使用ML预测婴儿生存几率80
- 6.2.1加载数据80
- 6.2.2创建转换器81
- 6.2.3创建一个评估器82
- 6.2.4创建一个管道82
- 6.2.5拟合模型83
- 6.2.6评估模型的性能84
- 6.2.7保存模型84
- 6.3超参调优85
- 6.3.1网格搜索法85
- 6.3.2Train-validation 划分88
- 6.4使用PySpark ML的其他功能89
- 6.4.1特征提取89
- 6.4.2分类93
- 6.4.3聚类95
- 6.4.4回归98
- 6.5小结99
- 第7章GraphFrames100
- 7.1GraphFrames介绍102
- 7.2安装GraphFrames102
- 7.2.1创建库103
- 7.3准备你的航班数据集105
- 7.4构建图形107
- 7.5执行简单查询108
- 7.5.1确定机场和航班的数量108
- 7.5.2确定这个数据集中的最长延误时间108
- 7.5.3确定延误和准点/早到航班的数量对比109
- 7.5.4哪一班从西雅图出发的航班最有可能出现重大延误109
- 7.5.5西雅图出发到哪个州的航班最有可能出现重大延误110
- 7.6理解节点的度110
- 7.7确定最大的中转机场112
- 7.8理解Motif113
- 7.9使用PageRank确定机场排名114
- 7.10确定最受欢迎的直飞航班115
- 7.11使用广度优先搜索116
- 7.12使用D3将航班可视化118
- 7.13小结119
- 第8章TensorFrames120
- 8.1深度学习是什么120
- 8.1.1神经网络和深度学习的必要性123
- 8.1.2特征工程是什么125
- 8.1.3桥接数据和算法125
- 8.2TensorFlow是什么127
- 8.2.1安装PIP129
- 8.2.2安装TensorFlow 129
- 8.2.3使用常量进行矩阵乘法130
- 8.2.4使用placeholder进行矩阵乘法131
- 8.2.5讨论132
- 8.3TensorFrames介绍133
- 8.4TensorFrames快速入门134
- 8.4.1配置和设置134
- 8.4.2使用TensorFlow向已有列添加常量136
- 8.4.3Blockwise reducing操作示例137
- 8.5小结139
- 第9章使用Blaze实现混合持久化141
- 9.1安装Blaze141
- 9.2混合持久化142
- 9.3抽象数据143
- 9.3.1使用NumPy 数组 143
- 9.3.2使用pandas的DataFrame145
- 9.3.3使用文件145
- 9.3.4使用数据库147
- 9.4数据操作149
- 9.4.1访问列150
- 9.4.2符号转换150
- 9.4.3列的操作151
- 9.4.4降阶数据152
- 9.4.5连接154
- 9.5小结156
- 第10章结构化流157
- 10.1什么是Spark Streaming157
- 10.2为什么需要Spark Streaming159
- 10.3Spark Streaming应用程序数据流是什么160
- 10.4使用DStream简化Streaming应用程序161
- 10.5全局聚合快速入门165
- 10.6结构化流介绍168
- 10.7小结172
- 第11章打包Spark应用程序173
- 11.1spark-submit命令173
- 11.2以编程方式部署应用程序176
- 11.2.1配置你的SparkSession 176
- 11.2.2创建SparkSession 177
- 11.2.3模块化代码177
- 11.2.4提交作业180
- 11.2.5监控执行182
- 11.3Databricks作业184
- 11.4小结186