Spark SQL入門與數據分析實踐
內容描述
Spark?SQL是Spark用於處理結構化數據的一個模塊。本書共8章內容,由淺入深地講解Spark?SQL的基礎知識、安裝部署、編程基礎、編程進階、函數、性能調優技巧以及編程實踐等知識。通過本書的學習,讀者能夠掌握Spark?SQL核心技術。本書每章安排了習題和總結,以便使讀者能更好地學習和更牢固地掌握Spark?SQL編程方法。此外,本書還提供了PPT教學課件、源代碼等配套資源,供使用本書的讀者下載。
本書可作為高等學校大數據、電腦、統計相關專業學生的大數據進階課程的教材,也可供相關技術人員學習參考。
目錄大綱
第壹章 Spark SQL基礎知識 1
1.1 Spark SQL背景 1
1.2 Spark SQL簡介 1
1.2.1 Spark SQL的特點 2
1.2.2 Spark SQL的用途 2
1.2.3 Spark SQL的使用場景 2
1.3 為什麼要學習Spark SQL 3
1.4 Spark SQL的原理 3
1.4.1 傳統SQL的運行原理 3
1.4.2 Spark SQL的運行原理 4
1.4.3 Spark SQL的開發步驟 6
1.5 Spark SQL的運行模式 7
1.5.1 Local模式 7
1.5.2 Standalone模式 7
1.5.3 OnYarn模式 8
小結 11
習題 11
第2章 Spark SQL安裝部署 12
2.1 運行環境說明 12
2.1.1 操作系統說明 12
2.1.2 Java版本說明 12
2.1.3 Scala版本說明 12
2.1.4 操作系統客戶端工具說明 13
2.2 運行環境準備 13
2.2.1 依賴下載 13
2.2.2 安裝Java 14
2.2.3 安裝Scala 14
2.3 部署Spark SQL 15
2.3.1 下載安裝包 15
2.3.2 單機部署 15
2.3.3 集群部署 16
2.3.4 運行環境參數 21
小結 23
習題 23
第3章 個Spark SQL應用程序 24
3.1 搭建開發環境 24
3.1.1 下載開發工具 24
3.1.2 安裝IDEA 25
3.2 編寫Spark SQL應用程序 26
3.2.1 Spark SQL應用程序的編寫
步驟 27
3.2.2 編寫個Spark SQL應用
程序 27
3.2.3 運行個Spark SQL應用
程序 38
小結 44
習題 44
第4章 Spark SQL編程基礎 45
4.1 RDD概述 45
4.1.1 RDD的優缺點 45
4.1.2 RDD模型介紹 46
4.2 深入剖析RDD 47
4.2.1 Spark相關專業術語定義 47
4.2.2 Spark Application的構成 55
4.2.3 Spark運行的基本流程 55
4.2.4 Spark運行架構的特點 56
4.2.5 Spark核心原理 58
4.3 創建RDD 62
4.4 RDD操作 65
4.4.1 RDD轉換操作 65
4.4.2 RDD控制操作 72
4.4.3 RDD行動操作 73
4.5 RDD持久化 76
4.5.1 持久化優勢 77
4.5.2 持久化策略 77
4.6 RDD容錯機制 78
4.6.1 lineage機制 78
4.6.2 checkpoint機制 79
小結 81
習題 81
第5章 Spark SQL編程進階 82
5.1 概述 82
5.2 SparkSession 82
5.2.1 SparkSession介紹 82
5.2.2 創建SparkSession 82
5.2.3 SparkSession參數設置 85
5.2.4 SparkSession元信息讀取 85
5.3 DataFrame 85
5.3.1 深入理解DataFrame 86
5.3.2 DataFrame的優缺點 86
5.3.3 DataFrame的演變過程 87
5.3.4 DataFrame的使用形式 89
5.3.5 創建DataFrame 89
5.3.6 DataFrame操作 102
5.3.7 DataFrame持久化 114
5.3.8 DataFrame實例 117
5.4 DataSet 120
5.4.1 深入理解DataSet 120
5.4.2 DataSet的優點 120
5.4.3 創建DataSet 121
5.4.4 DataSet操作 121
5.4.5 DataSet持久化 122
5.5 數據抽象的共性與區別 122
5.5.1 3種數據抽象的共性 123
5.5.2 3種數據抽象的區別 123
5.6 數據抽象的相互轉換 123
5.6.1 將RDD轉換為DataFrame 124
5.6.2 將DataFrame轉換為
DataSet 124
5.6.3 將DataSet轉換為
DataFrame 124
小結 125
習題 125
第6章 Spark SQL函數 126
6.1 用戶定義函數 126
6.1.1 註冊UDF 126
6.1.2 使用UDF 126
6.1.3 UDF實例 127
6.2 用戶定義聚合函數 128
6.2.1 註冊UDAF 129
6.2.2 使用UDAF 129
6.2.3 UDAF實例 129
6.3 常用內置函數 131
小結 131
習題 131
第7章 Spark SQL性能調優 133
7.1 概述 133
7.1.1 木桶原理 133
7.1.2 阿姆達爾定律 134
7.2 並行度調優 134
7.2.1 什麼是並行度 134
7.2.2 為什麼需要對並行度進行
調優 134
7.2.3 如何合理設置並行度 135
7.3 內存調優 135
7.3.1 為什麼需要對內存進行
調優 136
7.3.2 如何充分使用內存 136
7.4 磁盤I/O調優 137
7.4.1 為什麼需要對磁盤I/O進行
調優 137
7.4.2 如何充分使用磁盤I/O 138
7.5 網絡I/O調優 139
7.5.1 為什麼需要對網絡I/O進行
調優 139
7.5.2 如何充分使用網絡I/O 139
小結 140
習題 140
第8章 Spark SQL編程實踐 141
8.1 Spark SQL實踐一——學生考試
信息分析 141
8.2 Spark SQL實踐二——生鮮電商
交易數據分析 142
8.3 Spark SQL實踐三——四川省
新生嬰兒信息分析 144
小結 152
附錄 153
附錄1 常用內置函數 153
附錄1.1 常用聚合函數 153
附錄1.2 常用排序函數 156
附錄1.3 常用字符串函數 157
附錄1.4 常用時間函數 162
附錄1.5 常用數學函數 167
附錄1.6 常用集合函數 170
附錄1.7 其他常用函數 172
附錄2 常用高階函數 173
附錄2.1 transform函數 173
附錄2.2 aggregate函數 174
附錄2.3 filter函數 174
附錄2.4 exists函數 175
附錄2.5 zip_with函數 175
附錄3 術語解釋 175
作者介紹
楊虹
重慶市半導體行業協會副理事長,重慶市電子學會常務理事,重慶市高校青年骨干教師。
張安文
加米穀大數據負責人,國家大數據標準組成員、大數據架構師,大數據實戰開發者。