会员   密码 您忘记密码了吗?
1,656,036 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > Spark原理深入與編程實戰(微課視頻版)
Spark原理深入與編程實戰(微課視頻版)
上一张
下一张
prev next

Spark原理深入與編程實戰(微課視頻版)

作者: 辛立偉,張帆,張會娟
出版社: 清華大學出版社
ISBN: 9787302628866
出版日期: 2023-07-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT1134.00
市场价格: RM203.87
本店售价: RM181.44
促销价: RM171.25
剩余时间: 请稍等, 正在载入中...
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書系統講述Apache Spark大數據計算平臺的原理,以及如果將Apache Spark應用於大數據的即時流處理、批次處理、圖計算等各個場景。通過原理深入學習和實踐示例、案例的學習應用,使讀者瞭解並掌握Apache Spark大數據計算平臺的基本原理和技能,接近理論與實踐的距離。全書共分為13章,主要內容包括Spark架構原理與集群搭建、開發和部署Spark應用程式、Spark核心程式設計、Spark SQL、Spark SQL高級分析、Spark Streaming流處理、Spark結構化流、Spark結構化流高級處理、下一代Spark圖處理庫GraphFrames、下一代大數據技術(Delta Lake數據湖、Iceberg數據湖和Hudi數據湖)、Spark大數據處理綜合案例。

本書源碼全部在Apache Spark 3.1.2上調試成功,所有示例和案例均基於Scala語言。為降低讀者學習大數據技術的門檻,本書除了提供了豐富的上機實踐操作和範例程式詳細講解之外,本書作者還為購買和使用本書的讀者提供了搭建好的Hadoop、Hive數倉和Spark大數據開發和學習環境。讀者既可以參照本書的講解自行搭建Hadoop和Spark環境,也可直接使用作者提供的開始和學習環境,快速開始大數據和Spark、數據湖的學習。本書系統講解了Apache Spark大數據計算平臺的原理和流、批次處理的開發實踐,內容全面、實例豐富、可操作性強,做到了理論與實踐相結合。本書適合大數據學習愛好者、想要入門Apache Spark的讀者作為入門和提高的技術參考書,也適合用作大中專院校大數據專業相關的學生和老師的教材或教學參考書。


作者介紹

辛立偉,一個在IT領域摸爬滾打二十多年的老程式師、技術培訓師、技術作者。橫跨Java、數據庫、大數據開發與分析、人工智慧等多個領域,參與多個IT項目的架構設計與開發。長期堅持撰寫技術博客,曾在多個大學講授Java開發、數據庫和大數據技術課程,曾擔任中國石油大學(青島校區)等多所院校的外聘講師。

張帆,碩士,副教授,中國計算機學會會員,河南省教育廳學術技術帶頭人,華為認證openGauss數據庫工程師。主持參與各級專案19項,發表論文22篇,參編著作5部。研究方向為數據庫技術、大數據存儲與處理技術、雲計算技術。

張會娟,博士,華北水利水電大學公共管理學院教師。于2020年在河南理工大學測繪科學與技術系獲得工學博士學位。研究興趣包括地理資訊系統、遙感、人工智慧等方向,在數據挖掘、深度學習等方面有深入研究,在國內外期刊發表相關論文多篇。


目錄

第1章 Spark架構原理與集群搭建 (
93min) 1
1.1 Spark簡介·1
1.2 Spark技術棧·3
1.2.1 Spark Core4
1.2.2 Spark SQL4
1.2.3 Spark Streaming和 Structured Streaming·5
1.2.4 Spark MLlib ·5
1.2.5 Spark GraphX·6
1.2.6 SparkR ·6
1.3 Spark架構原理 ·7
1.3.1 Spark集群和資源管理系統 7
1.3.2 Spark應用程式 7
1.3.3 Spark Driver和 Executor ·9
1.4 Spark程式部署模式10
1.5 安裝和配置 Spark集群·11
1.5.1 安裝 Spark ·11
1.5.2 瞭解 Spark目錄結構·12
1.5.3 配置 Spark集群·13
1.5.4 驗證 Spark安裝·14
1.6 配置 Spark歷史伺服器·15
1.6.1 歷史伺服器配置 16
1.6.2 啟動 Spark歷史伺服器·17
1.7 使用 spark-shell進行互動式分析 ·18
1.7.1 運行模式 --master·18
1.7.2 啟動和退出 spark-shell19
1.7.3 spark-shell常用命令21
1.7.4 SparkContext和 SparkSession ·22
1.7.5 Spark Web UI ·23
1.8 使用 spark-submit提交 Spark應用程式·25
1.8.1 spark-submit指令的各種參數說明·25
1.8.2 提交 SparkPi程式,計算圓周率 π值·29
1.8.3 將 SparkPi程式提交到 YARN集群上執行 30

第2章 開發和部署 Spark應用程式 (
86min) · 33
2.1 使用 IntelliJ IDEA開發 Spark SBT應用程式33
2.1.1 安裝 IntelliJ IDEA ·34
2.1.2 配置 IntelliJ IDEA Scala環境37
2.1.3 創建 IntelliJ IDEA SBT項目·39
2.1.4 配置 SBT構建檔·42
2.1.5 準備數據文件 42
2.1.6 創建 Spark應用程式·43
2.1.7 部署分散式 Spark應用程式 ·47
2.1.8 遠端調試 Spark程式·49
2.2 使用 IntelliJ IDEA開發 Spark Maven應用程式 ·51
2.2.1 創建 IntelliJ IDEA Maven項目 ·51
2.2.2 驗證 SDK安裝和配置 53
2.2.3 專案依賴和配置管理 55
2.2.4 測試 Spark程式·58
2.2.5 項目編譯和打包 58
2.3 使用 Java開發 Spark應用程式 59
2.3.1 創建一個新的 IntelliJ項目59
2.3.2 驗證 SDK安裝和配置 61
2.3.3 安裝和配置 Maven 63
2.3.4 創建 Spark應用程式·64
2.3.5 部署 Spark應用程式·66
2.3.6 遠端調試 Spark應用程式 ·67
2.4 使用 Zeppelin進行互動式分析 ·69
2.4.1 下載 Zeppelin安裝包70
2.4.2 安裝和配置 Zeppelin ·70
2.4.3 配置 Spark解譯器·71
2.4.4 創建和執行 Notebook程式·72

第3章 Spark核心程式設計 (
252min) 75
3.1 理解數據抽象 RDD·75
3.1.1 RDD結構75
3.1.2 RDD容錯76
3.2 RDD程式設計模型 77
3.2.1 單詞計數應用程式 77
3.2.2 理解 SparkSession79
3.2.3 理解 SparkContext ·80
3.3 創建 RDD 81
3.3.1 將現有的集合並行化以創建 RDD81
3.3.2 從存儲系統讀取數據集以創建 RDD82
3.3.3 從已有的 RDD轉換得到新的 RDD ·83
3.3.4 創建 RDD時指定分區數量 83
3.4 操作 RDD 84
3.4.1 RDD上的 Transformation和 Action ·85
3.4.2 RDD Transformation操作87
3.4.3 RDD Action操作·92
3.4.4 RDD上的描述性統計操作·95
3.5 Pair RDD96
3.5.1 創建 Pair RDD ·97
3.5.2 操作 Pair RDD ·98
3.5.3 關於 reduceByKey()操作·101
3.5.4 關於 aggregateByKey()操作103
3.5.5 關於 combineByKey()操作106
3.6 持久化 RDD 109
3.6.1 緩存 RDD 109
3.6.2 RDD緩存策略 112
3.6.3 檢查點 RDD 113
3.7 RDD數據分區 113
3.7.1 獲取和指定 RDD分區數 114
3.7.2 調整 RDD分區數 114
3.7.3 內置數據分區器 116
3.7.4 自訂數據分區器 118
3.7.5 避免不必要的 shuffling ·120
3.7.6 基於數據分區的操作 122
3.8 深入理解 RDD執行過程125
3.8.1 Spark RDD調度過程·125
3.8.2 Spark執行模型 126
3.9 Spark資源管理 ·131
3.9.1 CPU資源配置策略 ·131
3.9.2 Spark記憶體管理 132
3.10 使用共用變數 134
3.10.1 廣播變數 134
3.10.2 累加器139
3.11 Spark RDD程式設計案例·143
3.11.1 合併小檔 143
3.11.2 二次排序實現 145
3.11.3 Top N實現·146
3.11.4 酒店數據預處理 150

第4章 Spark SQL (
202min) 154
4.1 Spark SQL數據抽象·155
4.2 Spark SQL架構組成·156
4.3 Spark SQL程式設計模型·157
4.4 程式入口 SparkSession160
4.5
Spark SQL支援的數據類型162
4.5.1
Spark SQL基本數據類型162
4.5.2
Spark SQL複雜數據類型162
4.5.3
模式·163
4.5.4
列物件和行物件 163
4.6
創建 DataFrame ·164
4.6.1
簡單創建單列和多列 DataFrame 165
4.6.2
從 RDD創建 DataFrame ·168
4.6.3
讀取外部數據源創建 DataFrame 172
4.7
操作 DataFrame ·191
4.7.1
列的多種引用方式 192
4.7.2
對 DataFrame執行 Transformation轉換操作·193
4.7.3
對 DataFrame執行 Action操作205
4.7.4
對 DataFrame執行描述性統計操作 ·206
4.7.5
取 DataFrame Row中特定欄位·209
4.7.6
操作 DataFrame示例· 211
4.8
存儲 DataFrame ·212
4.8.1
寫出 DataFrame ·212
4.8.2
存儲模式 215
4.8.3
控制 DataFrame的輸出檔數量·216
4.8.4
控制 DataFrame實現分區存儲·220
4.9
使用類型化的 DataSet·221
4.9.1
瞭解 DataSet 221
4.9.2
創建 DataSet 222
4.9.3
操作 DataSet 229
4.9.4
類型安全檢查 244
4.9.5
編碼器 ·246
4.10
臨時視圖與 SQL查詢·249
4.10.1
在 Spark程式中執行 SQL語句 249
4.10.2
註冊臨時視圖並執行 SQL查詢250
4.10.3
使用全域臨時視圖 252
4.10.4
直接使用數據源註冊臨時視圖 ·254
4.10.5
查看和管理表目錄 255
4.11緩存
DataFrame/DataSet 256
4.11.1
緩存方法 256
4.11.2
緩存策略 257
4.11.3
緩存表258
4.12
Spark SQL程式設計案例·259
4.12.1
實現單詞計數 259
4.12.2
用戶數據集分析 261
4.12.3
電商用戶評論數據集分析 ·264
4.12.4
航空公司航班數據集分析 ·266
4.12.5
數據增量抽取和全量抽取 ·274

第5章 Spark SQL(高級)(
190min) ·276
5.1 Spark SQL函數·276
5.2 內置標量函數 276
5.2.1 日期時間函數 277
5.2.2 字串函數 280
5.2.3 數學計算函數 284
5.2.4 集合元素處理函數 285
5.2.5 其他函數 288
5.2.6 函數應用示例 291
5.2.7 Spark 3數組函數·294
5.3 聚合與透視函數 301
5.3.1 聚合函數 301
5.3.2 分組聚合 307
5.3.3 數據透視 311
5.3.4 謂詞子查詢 312
5.4 高級分析函數 313
5.4.1 使用多維聚合函數 313
5.4.2 使用時間視窗聚合 316
5.4.3 使用視窗分析函數 321
5.5 用戶自訂函數( UDF)·330
5.6 數據集的 join連接332
5.6.1 join運算式和 join類型·332
5.6.2 執行 join連接333
5.6.3 處理重複列名 340
5.6.4 join連接策略·342
5.7 讀寫 Hive表344
5.7.1 Spark SQL的 Hive配置345
5.7.2 Spark Maven專案的 Hive配置·346
5.7.3 Spark SQL讀寫 Hive表347
5.7.4 分桶、分區和排序 352
5.8 查詢最佳化工具 Catalyst 359
5.8.1 窄轉換和寬轉換 360
5.8.2 Spark執行模型 361
5.8.3 Catalyst實踐363
5.8.4 視覺化 Spark程式執行·366
5.9 項目 Tungsten372
5.10 Spark性能調優373
5.11 Spark SQL程式設計案例 ·375
5.11.1 電影數據集分析 375
5.11.2 電商數據集分析 379
5.12 Spark SQL分析案例·387
5.12.1 用戶行為數據集說明 ·387
5.12.2 分析需求說明 388
5.12.3 數據探索和預處理 390
5.12.4 平臺流量分析 394
5.12.5 用戶行為分析 397
5.12.6 轉化漏斗分析 405
5.12.7 用戶 RFM價值分析408
5.12.8 推薦效果分析 412
5.12.9 項目分析總結 417

第6章 Spark Streaming流處理 (
73min)·418
6.1 Spark DStream ·418
6.2 Spark流處理示例419
6.2.1 Spark Streaming程式設計模型·420
6.2.2 即時股票交易分析 423
6.2.3 使用外部數據源 Kafka440

第7章 Spark結構化流 (
162min)·446
7.1 結構化流簡介 446
7.2 結構化流程式設計模型 448
7.3 結構化流核心概念 451
7.3.1 數據源 ·451
7.3.2 輸出模式 452
7.3.3 觸發器類型 452
7.3.4 數據接收器 453
7.3.5 浮水印·454
7.4 使用各種流數據源 454
7.4.1 使用 Socket數據源·454
7.4.2 使用 Rate數據源·456
7.4.3 使用 File數據源458
7.4.4 使用 Kafka數據源 461
7.5 流 DataFrame操作467
7.5.1 選擇、投影和聚合操作 468
7.5.2 執行 join連接操作471
7.6 使用數據接收器 474
7.6.1 使用 File Data Sink 474
7.6.2 使用 Kafka Data Sink·475
7.6.3 使用 Foreach Data Sink478
7.6.4 使用 Console Data Sink ·480
7.6.5 使用 Memory Data Sink·482
7.6.6 Data Sink與輸出模式 ·483
7.7 深入研究輸出模式 483
7.7.1 無狀態流查詢 483
7.7.2 有狀態流查詢 484
7.8 深入研究觸發器 489
7.8.1 固定間隔觸發器 490
7.8.2 一次性的觸發器 492
7.8.3 連續性的觸發器 492

第8章 Spark結構化流(高級)(
72min)·496
8.1 事件時間和窗口聚合 496
8.1.1 固定窗口聚合 496
8.1.2 滑動窗口聚合 500
8.2 浮水印·504
8.2.1 限制維護的聚合狀態數量 ·504
8.2.2 處理遲到的數據 507
8.3 任意狀態處理 512
8.3.1 結構化流的任意狀態處理 ·513
8.3.2 處理狀態超時 514
8.3.3 任意狀態處理實戰 515
8.4 處理重複數據 524
8.5 容錯·526
8.6 流查詢度量指標和容錯 528
8.6.1 流查詢指標 528
8.6.2 流監控指標 530
8.7 結構化流案例:運輸公司車輛超速即時監測 531
8.8 結構化流案例:即時訂單分析 ·536
8.8.1 數據集說明和數據源 537
8.8.2 計算每 10s的銷售和購買訂單數量 538
8.8.3 根據購買或售出的總金額統計前 5個客戶541
8.8.4 找出過去一小時內前 5個交易量昀多的股票543

第9章 Spark圖處理庫 GraphFrame (
80min)546
9.1 圖基本概念 546
9.2 GraphFrame圖處理庫簡介 ·548
9.3 GraphFrame的基本使用·549
9.3.1 添加 GraphFrame依賴549
9.3.2 構造圖模型 550
9.3.3 簡單圖查詢 551
9.3.4 示例:簡單航班數據分析 ·556
9.4 應用 motif模式查詢 ·559
9.4.1 簡單 motif查詢·560
9.4.2 狀態查詢 562
9.5 構建子圖 ·563
9.6 內置圖演算法 565
9.6.1 廣度優先搜索( BFS)演算法 565
9.6.2 連通分量演算法 567
9.6.3 強連通分量演算法 568
9.6.4 標籤傳播演算法 569
9.6.5 PageRank演算法·570
9.6.6 昀短路徑演算法 573
9.6.7 三角計數演算法 574
9.7 保存和載入 GraphFrame ·575
9.8 深入理解 GraphFrame ·576
9.9 案例:亞馬遜產品聯購分析 ·578
9.9.1 基本圖查詢和操作 579
9.9.2 聯購商品分析 580
9.9.3 處理子圖 584
9.9.4 應用圖演算法進行分析 584

第10章 Delta Lake數據湖 (
61min) 586
10.1 從數據倉庫到數據湖 586
10.2 解耦存儲層和分析層 588
10.3 Delta Lake介紹·591
10.4 Delta Lake架構·593
10.5 Delta Lake使用·595
10.5.1 安裝 Delta Lake595
10.5.2 表批次處理讀寫 596
10.5.3 表流處理讀寫 602
10.5.4 文件移除 605
10.5.5 壓縮小檔 612
10.5.6 增量更新與時間旅行 ·615
10.5.7 合併更新( upsert)·621

第11章 Iceberg數據湖 (
90min) 630
11.1 Apache Iceberg簡介630
11.2配置和使用 Catalog·631
11.2.1 配置 Catalog·632
11.2.2 使用 Catalog·633
11.2.3 替換 Session Catalog 633
11.2.4 運行時配置 634
11.3管理 Catalog中的數據庫635
11.4管理 Iceberg表635
11.4.1 基本的 CRUD操作635
11.4.2 創建和刪除表 640
11.4.3 使用分區表和分桶表 ·642
11.4.4 數據覆蓋 652
11.4.5 修改表結構 654
11.5探索 Iceberg表663
11.5.1 History歷史表·663
11.5.2 Snapshots快照表·664
11.5.3 Files數據文件表664
11.5.4 Manifests檔清單表665
11.6 Apache Iceberg架構666
11.6.1 Iceberg Catalog·666
11.6.2 元數據文件 667
11.6.3 清單清單( Manifest List)670
11.6.4 清單檔( Manifest File)673
11.7 CRUD操作的底層實現 676
11.8增量更新與合併更新 679
11.9時間旅行685
11.10 隱藏式磁碟分割和分區演變 688
11.10.1 分區概念 ·688
11.10.2 分區演變示例 ·691
11.11 使用存儲過程維護表·698
11.12 整合 Spark結構化流·701
11.12.1 流讀取 ·701
11.12.2 流寫入 ·701
11.12.3 維護流表 ·704

第12章 Hudi數據湖 (
19min) 707
12.1 Apache Hudi特性707
12.1.1 Hudi Timeline·707
12.1.2 Hudi文件佈局 ·709
12.1.3 Hudi表類型 ·709
12.1.4 Hudi查詢類型 ·712
12.2 在 Spark 3中使用 Hudi ·713
12.2.1 配置 Hudi·713
12.2.2 初始設置 714
12.2.3 插入數據 715
12.2.4 查詢數據 716
12.2.5 更新數據 718
12.2.6 增量查詢 718
12.2.7 時間點查詢 720
12.2.8 刪除數據 720
12.2.9 插入覆蓋 722

第13章 Spark大數據處理綜合案例 (
15min) ·724
13.1 專案需求說明 724
13.2 專案架構設計 725
13.3 項目實現:數據採集 726
13.4 項目實現:數據集成 729
13.4.1 Flume簡介·729
13.4.2 安裝和配置 Flume ·730
13.4.3 實現數據集成 731
13.5 項目實現:數據 ETL732
13.6 項目實現:數據清洗與整理 ·735
13.7 項目實現:數據分析 739
13.8 項目實現:分析結果匯出 ·747
13.9 項目實現:數據視覺化 748
13.9.1 Spring MVC框架簡介·749
13.9.2 ECharts圖表庫介紹·750
13.9.3 Spring MVC Web程式開發 ·751
13.9.4 前端 ECharts元件開發763
13.10 項目部署和測試 768