Spark 實戰, 2/e (Spark in Action ,2/e)

Jean-Georges Perrin 林賜 譯

  • 出版商: 清華大學
  • 出版日期: 2022-03-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • 頁數: 368
  • 裝訂: 平裝
  • ISBN: 7302596786
  • ISBN-13: 9787302596783
  • 相關分類: Spark
  • 此書翻譯自: Spark in Action ,2/e (Paperback)
  • 立即出貨 (庫存 < 3)

  • Spark 實戰, 2/e (Spark in Action ,2/e)-preview-1
  • Spark 實戰, 2/e (Spark in Action ,2/e)-preview-2
Spark 實戰, 2/e (Spark in Action ,2/e)-preview-1

買這商品的人也買了...

商品描述

用Java編寫的Spark應用程序; Spark應用架構; 提取文件、數據庫、數據流和Elasticsearch的數據; 使用Spark SOL查詢分佈式數據集

目錄大綱

目    錄

 

 

第Ⅰ部分  通過示例講解理論

第1章  Spark介紹   3

1.1  Spark簡介及其作用   4

1.1.1  什麽是Spark   4

1.1.2  Spark神力的四個支柱   5

1.2  如何使用Spark   7

1.2.1  數據處理/工程場景中的Spark   7

1.2.2  數據科學場景中的Spark   8

1.3  使用Spark,能做些什麽   9

1.3.1  使用Spark預測NC餐飲行業的餐館質量   10

1.3.2  Spark允許Lumeris進行快速數據傳輸   10

1.3.3  Spark分析CERN的設備日誌   10

1.3.4  其他用例   11

1.4  為什麽你應該喜歡數據幀   11

1.4.1  從Java角度瞭解數據幀   11

1.4.2  從RDBMS角度理解數據幀   12

1.4.3  數據幀的圖形表示   12

1.5  第一個示例   13

1.5.1  推薦軟件   13

1.5.2  下載代碼   13

1.5.3  運行第一個應用程序   14

1.5.4  第一份代碼   15

1.6  小結   16

第2章  架構和流程   17

2.1  構建思維模型   17

2.2  使用Java代碼構建思維模型   18

2.3  運行應用程序   21

2.3.1  連接到主機   21

2.3.2  加載或提取CSV文件   22

2.3.3  轉換數據   25

2.3.4  將數據幀中完成的工作保存到數據庫中   26

2.4  小結   29

第3章  數據幀的重要作用   31

3.1  數據幀在Spark中的基本作用   32

3.1.1  數據幀的組織   32

3.1.2  不變性並非貶低之詞   33

3.2  通過示例演示數據幀的使用   35

3.2.1  簡單提取CSV後的數據幀   36

3.2.2  數據存儲在分區中   40

3.2.3  挖掘模式   41

3.2.4  提取JSON後的數據幀   43

3.2.5  合並兩個數據幀   48

3.3  數據幀Dataset<Row>   53

3.3.1  重用POJO   53

3.3.2  創建字符串數據集   54

3.3.3  來回轉換   55

3.4  數據幀的祖先:RDD   60

3.5  小結   61

第4章  Spark的“惰性”本質   63

4.1  現實中懶惰但高效的示例   64

4.2  懶惰但高效的Spark示例   65

4.2.1  查看數據轉換和數據操作的結果   65

4.2.2  數據轉換的過程,逐步進行   66

4.2.3  數據轉換/操作流程的後台代碼   68

4.2.4  在182毫秒內創建700多萬個數據點的奧秘   71

4.2.5  操作計時背後的奧秘   72

4.3  與RDBMS和傳統應用程序進行比較   76

4.3.1  使用青少年生育率數據集   76

4.3.2  分析傳統應用程序和Spark應用程序之間的區別   77

4.4  對於以數據為中心的應用程序而言,Spark的表現出乎意料   78

4.5  Catalyst是應用程序的催化器   79

4.6  小結   81

第5章  構建一個用於部署的簡單應用程序   83

5.1  無數據提取的示例   83

5.1.1  計算π   84

5.1.2  計算近似值π的代碼   85

5.1.3  Java中的lambda函數是什麽   90

5.1.4  使用lambda函數估算π   92

5.2  與Spark交互   93

5.2.1  本地模式   94

5.2.2  集群模式   95

5.2.3  Scala和Python的交互模式   97

5.3  小結   102

第6章  部署簡單的應用程序   105

6.1  示例之外:組件的作用   106

6.1.1  快速瀏覽組件及其之間的交互   107

6.1.2  Spark架構的故障排除技巧   110

6.1.3  知識拓展   110

6.2  構建集群   111

6.2.1  如何構建集群   111

6.2.2  設置環境   112

6.3  構建應用程序,在集群上運行   115

6.3.1  構建應用程序的超級JAR   115

6.3.2  使用Git和Maven構建應用程序   117

6.4  在集群上運行應用程序   119

6.4.1  提交超級JAR   119

6.4.2  運行應用程序   120

6.4.3  分析Spark的用戶界面   121

6.5  小結   122

第Ⅱ部分  數據提取

第7章  從文件中提取數據   125

7.1  解析器的常見行為   126

7.2  從CSV中提取數據(比較復雜)   126

7.2.1  預期輸出   128

7.2.2  代碼   128

7.3  使用已知模式提取CSV   129

7.3.1  預期輸出   130

7.3.2  代碼   130

7.4  提取JSON文件   132

7.4.1  預期輸出   134

7.4.2  代碼   134

7.5  提取多行JSON文件   135

7.5.1  預期輸出   137

7.5.2  代碼   137

7.6  提取XML文件   138

7.6.1  預期輸出   140

7.6.2  代碼   140

7.7  提取文本文件   142

7.7.1  預期輸出   143

7.7.2  代碼   143

7.8  用於大數據的文件格式   144

7.8.1  傳統文件格式的問題   144

7.8.2  Avro是基於模式的序列化格式   145

7.8.3  ORC是一種列式存儲格式   145

7.8.4  Parquet也是一種列式存儲格式   146

7.8.5  比較Avro、ORC和Parquet   146

7.9  提取Avro、ORC和Parquet文件   146

7.9.1  提取Avro   146

7.9.2  提取ORC   148

7.9.3  提取Parquet   150

7.9.4  用於提取Avro、ORC或Parquet的參考表格   151

7.10  小結   151

第8章  從數據庫中提取數據   153

8.1  從關系數據庫中提取數據   154

8.1.1  數據庫連接備忘錄   154

8.1.2  瞭解示例中使用的數據   155

8.1.3  預期輸出   156

8.1.4  代碼   157

8.1.5  可替代的代碼   159

8.2  dialect的作用   160

8.2.1  什麽是dialect   160

8.2.2  Spark提供的JDBC dialect   161

8.2.3  構建自定義dialect   161

8.3  高級查詢和提取   163

8.3.1  使用WHERE子句進行過濾   163

8.3.2  在數據庫中連接數據   166

8.3.3  執行數據提取和分區   168

8.3.4  高級功能總結   171

8.4  從Elasticsearch中提取數據   171

8.4.1  數據流   171

8.4.2  Spark提取的NYC餐館數據集   172

8.4.3  從 Elasticsearch中提取NYC餐館數據集的代碼   173

8.5  小結   175

第9章  數據提取進階:尋找數據源與構建自定義數據源   177

9.1  什麽是數據源   179

9.2  直接連接數據源的好處   179

9.2.1  臨時文件   180

9.2.2  數據質量腳本   181

9.2.3  按需提供數據   181

9.3  查找Spark軟件包中的數據源   181

9.4  構建自己的數據源   181

9.4.1  示例項目的範圍   182

9.4.2  數據源API和選項   183

9.5  幕後工作:構建數據源本身   185

9.6  使用註冊器文件和廣告器類   186

9.7  理解數據和模式之間的關系   188

9.7.1  數據源構建關系   189

9.7.2  關系內部   191

9.8  使用JavaBean構建模式   194

9.9  使用實用程序構建數據幀的神奇方法   196

9.10  其他類   201

9.11  小結   201

第10章  提取結構化流數據   203

10.1  什麽是流數據   204

10.2  創建首個流數據   205

10.2.1  生成文件流數據   206

10.2.2  消費記錄   208

10.2.3  獲取記錄,而非數據行   213

10.3  從網絡流數據中提取數據   214

10.4  處理多個流數據   216

10.5  區分離散化流數據和結構化流數據   221

10.6  小結   221

第III部分  轉換數據

第11章  使用SQL   225

11.1  使用Spark SQL   225

11.2  本地視圖與全局視圖之間的區別   229

11.3  混合使用數據幀API和Spark SQL   230

11.4  不要刪除數據   233

11.5  進一步瞭解SQL   235

11.6  小結   235

第12章  轉換數據   237

12.1  數據轉換是什麽   238

12.2  在記錄層面進行數據轉換的過程和示例   238

12.2.1  數據發現,瞭解數據的復雜性   240

12.2.2  數據映射,繪制過程   241

12.2.3  編寫轉換代碼   244

12.2.4  審查數據轉換,確保質量流程   249

12.2.5  如何排序   251

12.2.6  結束Spark數據轉換的首次演示   251

12.3  連接數據集   251

12.3.1  仔細查看要連接的數據集   252

12.3.2  構建各縣的高等教育機構列表   253

12.3.3  執行連接操作   258

12.4  執行更多的數據轉換   263

12.5  小結   263

第13章  轉換整個文檔   265

13.1  轉換整個文檔及其結構   265

13.1.1  展平JSON文檔   266

13.1.2  構建嵌套文檔,用於數據傳輸和存儲   270

13.2  靜態函數背後的魔力   274

13.3  執行更多的數據轉換   275

13.4  小結   275

第14章  使用自定義函數擴展數據轉換   277

14.1  擴展Apache Spark   278

14.2  註冊和調用UDF   279

14.2.1  在Spark中註冊UDF   281

14.2.2  將UDF與數據幀API結合起來使用   282

14.2.3  使用SQL處理UDF   283

14.2.4  實現UDF   284

14.2.5  編寫服務代碼   285

14.3  使用UDF,確保數據高質量   287

14.4  考慮UDF的約束   289

14.5  小結   289

第15章  聚合數據   291

15.1  使用Spark聚合數據   291

15.1.1  簡單回顧數據聚合   292

15.1.2  使用Spark執行基本的數據聚合   294

15.2  使用實時數據執行數據聚合   296

15.2.1  準備數據集   297

15.2.2  聚合數據,更好地瞭解學校   301

15.3  使用UDAF構建自定義的聚合操作   306

15.4  小結   311

第IV部分  百尺竿頭,更進一步

第16章  緩存和檢查點:增強Spark的性能   315

16.1  使用緩存和檢查點可提高性能   315

16.1.1  Spark緩存的用途   317

16.1.2  Spark檢查點的妙用   318

16.1.3  使用緩存和檢查點   318

16.2  緩存實戰   326

16.3  有關性能優化的知識拓展   335

16.4  小結   335

第17章  導出數據,構建完整數據管道   337

17.1  導出數據的主要概念   337

17.1.1  使用NASA數據集構建管道   338

17.1.2  將列轉換為日期時間(datetime)   341

17.1.3  將置信度百分比轉換為置信度等級   341

17.1.4  導出數據   342

17.1.5  導出數據:實際發生了什麽   344

17.2  Delta Lake:使用系統核心的數據庫   346

17.2.1  理解需要數據庫的原因   346

17.2.2  在數據管道中使用Delta Lake   347

17.2.3  消費來自Delta Lake的數據   351

17.3  從Spark訪問雲存儲服務   353

17.4  小結   354

第18章  探索部署約束:瞭解生態系統   355

18.1  使用YARN、Mesos和Kubernetes管理資源   356

18.1.1  使用內置的獨立模式管理資源   356

18.1.2  在Hadoop環境中,使用YARN管理資源   357

18.1.3  Mesos是獨立的資源管理器   358

18.1.4  Kubernetes編排容器   360

18.1.5  選擇合適的資源管理器   360

18.2  與Spark共享文件   361

18.2.1  訪問文件中包含的數據   362

18.2.2  通過分佈式文件系統共享文件   362

18.2.3  訪問共享驅動器或文件服務器上的文件   363

18.2.4  使用文件共享服務分發文件   364

18.2.5  訪問Spark文件的其他選項   365

18.2.6  用於與Spark共享文件的混合解決方案   365

18.3  確保Spark應用程序的安全   365

18.3.1  保護基礎架構的網絡組件   366

18.3.2  保護Spark磁盤的使用   367

18.4  小結   367

 

附錄部分內容通過封底二維碼下載獲取

附錄A  安裝Eclipse   369

附錄B  安裝Maven   375

附錄C  安裝Git   379

附錄D  下載代碼,啟用Eclipse   381

附錄E  企業數據的歷史   387

附錄F  有關關系數據庫的幫助信息   391

附錄G  靜態函數使數據轉換變得容易   397

附錄H  簡略的Maven備忘單   407

附錄I  數據轉換和數據操作的

參考資料   411

附錄J  Scala簡介   421

附錄K  在生產環境中安裝Spark,以及一些提示   423

附錄L 關於數據提取的參考資料   435

附錄M  關於連接的參考資料   447

附錄N  安裝Elasticsearch和示例數據   459

附錄O 生成流數據   465

附錄P  有關流數據的參考資料   469

附錄Q  有關導出數據的參考資料   479

附錄R  遇到困難,尋找幫助   487