PySpark大數(shù)據(jù)分析實戰(zhàn) 伍鮮 常麗娟
定 價:119 元
叢書名:大數(shù)據(jù)科學(xué)叢書
- 作者:伍鮮常麗娟
- 出版時間:2023/12/1
- ISBN:9787111739593
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP274
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是PySpark大數(shù)據(jù)分析的入門讀物,適合有一定Python基礎(chǔ)的讀者學(xué)習(xí)使用。本書基于最新版本的PySpark 3.4.x編寫,全書共11章,系統(tǒng)地介紹了PySpark大數(shù)據(jù)分析的方法和技巧,內(nèi)容涵蓋了大數(shù)據(jù)的相關(guān)技術(shù)、PySpark的基本概念、Spark環(huán)境搭建、數(shù)據(jù)分析的基本概念及相關(guān)工具、開發(fā)工具的選擇、Spark核心編程和Spark SQL操作等基礎(chǔ)知識和核心技術(shù),以及Spark流式數(shù)據(jù)處理、Spark機器學(xué)習(xí)庫MLlib和基于協(xié)同過濾的圖書推薦系統(tǒng)等高級主題。本書通過多個實戰(zhàn)案例,帶領(lǐng)讀者掌握使用Python和Spark進行大數(shù)據(jù)分析的方法和技巧,從而提高讀者的數(shù)據(jù)處理能力和業(yè)務(wù)價值。
本書內(nèi)容全面、示例豐富、講解清晰,讀者可以直接應(yīng)用書中的案例。本書適合自學(xué),也可作為計算機、軟件工程、數(shù)據(jù)科學(xué)與大數(shù)據(jù)等專業(yè)的教學(xué)參考書,用于指導(dǎo)大數(shù)據(jù)分析編程實踐,還可供相關(guān)技術(shù)人員參考。
1. 6位行業(yè)專家鼎力推薦,大數(shù)據(jù)從業(yè)者案頭寶典。
2. 贈送超過2200分鐘的視頻教程+程序源代碼+運行環(huán)境安裝包,助你早日實現(xiàn)從入門到精通。
隨著互聯(lián)網(wǎng)和科技的發(fā)展,每天都會出現(xiàn)大量的數(shù)據(jù),這些數(shù)據(jù)包含了豐富的信息,大數(shù)據(jù)處理分析已經(jīng)成為全球范圍內(nèi)的重要議題。大數(shù)據(jù)分析是當(dāng)今時代的重要技能,它可以幫助我們從海量的數(shù)據(jù)中發(fā)現(xiàn)規(guī)律、洞察趨勢、優(yōu)化決策。然而,隨著數(shù)據(jù)量爆炸式的增長和復(fù)雜度的提高,傳統(tǒng)的數(shù)據(jù)分析工具已經(jīng)難以滿足需求。我們需要一種更強大、更靈活、更高效的大數(shù)據(jù)處理平臺來應(yīng)對各種數(shù)據(jù)挑戰(zhàn)。
Spark是目前最流行的大數(shù)據(jù)處理框架之一,可以處理大規(guī)模的數(shù)據(jù)集,它具有快速、易用、通用和兼容等特點,支持批處理、流式處理、交互式查詢和機器學(xué)習(xí)等多種場景,對于大數(shù)據(jù)分析非常有用。Python是一種廣泛使用的優(yōu)雅、易學(xué)的編程語言,因其簡潔明了的語法和強大的數(shù)據(jù)處理能力,受到廣 大數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家的喜愛,它擁有豐富的數(shù)據(jù)科學(xué)庫和社區(qū)資源,可以與Spark無縫集成,實現(xiàn)大數(shù)據(jù)分析的全棧開發(fā)。PySpark是Spark的Python接口,它允許我們使用Python語言進行大數(shù)據(jù)分析。系統(tǒng)地學(xué)習(xí)PySpark,掌握大數(shù)據(jù)處理的技能,能夠處理和分析大規(guī)模的數(shù)據(jù)集,這對于數(shù)據(jù)科學(xué)家和數(shù)據(jù)工程師來說是非常重要的。此外,由于PySpark是開源的,因此它也為我們提供了一個學(xué)習(xí)和分享知識的平臺。
在閱讀本書的過程中,可以對照源代碼按章節(jié)順序進行學(xué)習(xí)。當(dāng)然,如果對書中某些章節(jié)比較熟悉,也可以跳過,直接學(xué)習(xí)需要了解的章節(jié)。本書源代碼主要使用PyCharm社區(qū)版開發(fā),數(shù)據(jù)分析中的可視化、交互式開發(fā)、交互式查詢等可以使用JupyterLab或Databricks進行操作,因此本書也提供基于JupyterLab和Databricks開發(fā)的源代碼。當(dāng)然讀者也可以選擇自己喜歡的工具進行開發(fā)。
本書內(nèi)容共分為11章。第1~4章是基礎(chǔ)知識介紹;第5、6章是Spark的核心知識,其核心數(shù)據(jù)抽象RDD和DataFrame及相關(guān)的轉(zhuǎn)換操作是后續(xù)章節(jié)的基礎(chǔ),對整個Spark的學(xué)習(xí)都非常重要;第7章是整合大數(shù)據(jù)倉庫Hive,讓Spark可以輕松處理已有數(shù)據(jù)倉庫中的數(shù)據(jù);第8~10章是Spark中的高級主題,包括流式數(shù)據(jù)處理和機器學(xué)習(xí),其底層數(shù)據(jù)依然是RDD和DataFrame;第11章是一個綜合案例。各章節(jié)內(nèi)容說明如下:
第1章主要介紹了大數(shù)據(jù)的發(fā)展以及相關(guān)的技術(shù),包括Spark的發(fā)展歷程、特點、架構(gòu)、PySpark庫等,讓讀者對大數(shù)據(jù)技術(shù)及Spark有一個大致的了解。
第2章主要介紹了Spark環(huán)境的搭建,包括操作系統(tǒng)基礎(chǔ)環(huán)境準備、單機環(huán)境搭建、獨立集群環(huán)境搭建、YARN集群環(huán)境搭建以及云服務(wù)模式Databricks介紹等,讓我們開發(fā)的代碼有運行的地方。
第3章主要介紹了數(shù)據(jù)分析的基礎(chǔ)知識,包括數(shù)據(jù)分析流程、數(shù)據(jù)分析的常用工具庫和可視化庫等。
第4章主要介紹了幾種開發(fā)工具,包括Databricks、JupyterLab、PyCharm和PyCharm插件等,并且用每種工具都完成一個數(shù)據(jù)分析案例的開發(fā),讓讀者對各種開發(fā)工具的開發(fā)流程及特點有所了解。
第5章主要介紹了Spark的核心功能Spark Core,包括Spark程序入口SparkContext、核心數(shù)據(jù)抽象RDD,以及RDD的創(chuàng)建、轉(zhuǎn)換、持久化等功能,并用案例展示了如何在數(shù)據(jù)分析中使用RDD。
第6章主要介紹了Spark的結(jié)構(gòu)化數(shù)據(jù)處理Spark SQL,包括統(tǒng)一的Spark程序入口SparkSession、核心數(shù)據(jù)抽象DataFrame,以及DataFrame的創(chuàng)建、轉(zhuǎn)換、SQL操作和自定義函數(shù)等功能,并用案例展示了DataFrame在數(shù)據(jù)分析中的應(yīng)用。
第7章主要介紹了使用Spark操作大數(shù)據(jù)倉庫Hive中的數(shù)據(jù),無需數(shù)據(jù)遷移,即可讓Spark輕松處理Hive中已有的海量數(shù)據(jù),并用案例展示了Spark如何直接操作Hive數(shù)據(jù)進行數(shù)據(jù)分析。
第8章和第9章主要介紹了兩種不同的流式數(shù)據(jù)處理,包括創(chuàng)建、數(shù)據(jù)處理、結(jié)果輸出等。第8章Spark Streaming中的數(shù)據(jù)抽象是DStream,底層數(shù)據(jù)是RDD;第9章Structured Streaming的底層數(shù)據(jù)是DataFrame。
第10章主要介紹了機器學(xué)習(xí)庫MLlib,包括機器學(xué)習(xí)的基礎(chǔ)知識、機器學(xué)習(xí)流程、模型評估、機器學(xué)習(xí)算法等。對機器學(xué)習(xí)感興趣的讀者可以了解到如何在Spark集群中完成機器學(xué)習(xí),解決單機環(huán)境下的機器學(xué)習(xí)無法解決的問題。
第11章主要介紹了一個綜合案例,基于協(xié)同過濾的圖書推薦系統(tǒng),綜合運用Spark SQL、Structured Streaming、Spark MLlib、Kafka、MySQL、Flask、Flask-Admin等相關(guān)技術(shù),實現(xiàn)大數(shù)據(jù)分析的全棧開發(fā)。
本書讀者對象
本書適合有一定Python基礎(chǔ)的讀者,包括Python開發(fā)人員、大數(shù)據(jù)開發(fā)人員、數(shù)據(jù)分析師、數(shù)據(jù)科學(xué)愛好者等。
本書技術(shù)支持
非常感謝大家選擇本書,希望本書可以給讀者帶來有價值的東西。在本書創(chuàng)作過程中,作者盡力做好每個知識點的呈現(xiàn),但由于作者的精力和能力有限,在創(chuàng)作過程中難免有疏漏和不足之處,希望大家不吝指正。關(guān)于本書的任何問題都可發(fā)送郵件至wux_labs@outlook.com與作者交流。
本書配套資料
本書提供完整源代碼及視頻講解,讀者可以下載使用(具體方法詳見本書封底)。
關(guān)于作者
本書作者擁有多年金融領(lǐng)域大數(shù)據(jù)處理實戰(zhàn)經(jīng)驗,曾負責(zé)多家銀行的數(shù)據(jù)倉庫、大數(shù)據(jù)倉庫、營銷客戶集市建設(shè),熱愛各種主流技術(shù),對大數(shù)據(jù)技術(shù)棧Hadoop、Hive、Spark、Kafka等有深入研究,熱愛數(shù)據(jù)科學(xué)、
伍鮮,就職于中電金信軟件有限公司,擔(dān)任高級軟件工程師。擁有多年金融領(lǐng)域大數(shù)據(jù)處理實戰(zhàn)經(jīng)驗,曾負責(zé)多家銀行的Teradata數(shù)據(jù)倉庫、FusionInsight大數(shù)據(jù)集群、阿里云大數(shù)據(jù)倉庫、智能營銷客戶集市和客戶中心建設(shè)。
熱衷于各種主流技術(shù),對大數(shù)據(jù)技術(shù)棧Hadoop、Hive、Spark、Kafka等有深入研究。熱愛數(shù)據(jù)科學(xué)、機器學(xué)習(xí)、云計算、人工智能通過了微軟Azure開發(fā)人員、Azure數(shù)據(jù)工程師Azure解決方案架構(gòu)師專家認證,對Databricks的使用有豐富的經(jīng)驗。
前言
第1章 初識PySpark/
1.1 關(guān)于數(shù)據(jù)/
1.2 了解Hadoop/
1.2.1 分布式文件系統(tǒng)HDFS/
1.2.2 分布式計算框架MapReduce/
1.2.3 資源調(diào)度管理框架YARN/
1.3 了解Hive/
1.4 了解Spark/
1.4.1 Spark是什么/
1.4.2 Spark的發(fā)展歷程/
1.4.3 Spark的特點/
1.4.4 Spark的生態(tài)系統(tǒng)/
1.4.5 Spark的部署模式/
1.4.6 Spark的運行架構(gòu)/
1.5 PySpark庫介紹/
1.6 本章小結(jié)/
第2章 Spark環(huán)境搭建/
2.1 安裝環(huán)境準備/
2.1.1 操作系統(tǒng)準備/
2.1.2 Java環(huán)境準備/
2.1.3 Python環(huán)境準備/
2.1.4 Spark安裝包下載/
2.1.5 Hadoop安裝包下載/
2.2 Spark本地模式安裝/
2.2.1 使用交互式pyspark運行代碼/
2.2.2 寬窄依賴和階段劃分/
2.2.3 使用spark-submit提交代碼/
2.3 Spark獨立集群安裝/
2.3.1 配置并啟動Spark集群/
2.3.2 使用spark-submit提交代碼/
2.3.3 Spark History Server歷史服務(wù)/
2.3.4 獨立集群模式的代碼運行流程/
2.4 Spark on YARN模式安裝/
2.4.1 安裝Hadoop集群/
2.4.2 格式化NameNode/
2.4.3 啟動Hadoop集群/
2.4.4 配置Spark運行在YARN上/
2.4.5 使用spark-submit提交代碼/
2.4.6 Spark on YARN模式代碼運行流程/
2.5 云服務(wù)模式Databricks介紹/
2.5.1 Databricks基本概念/
2.5.2 創(chuàng)建集群/
2.5.3 數(shù)據(jù)集成/
2.5.4 創(chuàng)建筆記本/
2.5.5 運行案例/
2.5.6 創(chuàng)建作業(yè)/
2.5.7 運行作業(yè)/
2.5.8 其他類型的作業(yè)/
2.6 本章小結(jié)/
第3章 數(shù)據(jù)分析基礎(chǔ)/
3.1 什么是數(shù)據(jù)分析/
3.2 Python數(shù)據(jù)分析工具介紹/
3.2.1 數(shù)學(xué)計算庫NumPy介紹/
3.2.2 數(shù)據(jù)分析庫Pandas介紹/
3.3 數(shù)據(jù)分析圖表介紹/
3.4 Python數(shù)據(jù)可視化工具介紹/
3.4.1 Matplotlib介紹/
3.4.2 Seaborn介紹/
3.4.3 Pyecharts介紹/
3.4.4 三種可視化工具的對比/
3.5 本章小結(jié)/
第4章 選擇合適的開發(fā)工具/
4.1 使用Databricks探索數(shù)據(jù)/
4.1.1 使用筆記本開發(fā)代碼/
4.1.2【實戰(zhàn)案例】阿凡達電影評價分析/
4.2 使用JupyterLab探索數(shù)據(jù)/
4.2.1 創(chuàng)建虛擬環(huán)境/
4.2.2 安裝JupyterLab/
4.2.3 集成Spark引擎/
4.2.4【實戰(zhàn)案例】二手房數(shù)據(jù)分析/
4.3 使用PyCharm探索數(shù)據(jù)/
4.3.1 安裝PyCharm/
4.3.2 安裝Python/
4.3.3 創(chuàng)建PyCharm項目/
4.3.4 PyCharm插件介紹/
4.3.5【實戰(zhàn)案例】招聘信息數(shù)據(jù)分析/
4.4 本章小結(jié)/
第5章 核心功能Spark Core/
5.1 SparkContext介紹/
5.2 RDD介紹/
5.3 RDD的特性/
5.4 RDD的創(chuàng)建/
5.4.1 通過并行化本地集合創(chuàng)建RDD/
5.4.2 通過外部文件系統(tǒng)數(shù)據(jù)創(chuàng)建RDD/
5.4.3 通過已存在的RDD衍生新的RDD/
5.5 RDD的算子/
5.5.1 什么是算子/
5.5.2 算子的分類/
5.6 常用的Transformation算子/
5.6.1 基本算子/
5.6.2 二元組相關(guān)的算子/
5.6.3 分區(qū)相關(guān)的算子/
5.7 常用的Action算子/
5.7.1 基本算子/
5.7.2 Executor端執(zhí)行的算子/
5.8 RDD的持久化/
5.8.1 緩存/
5.8.2 緩存的特點/
5.8.3 檢查點/
5.8.4 緩存和檢查點的比較/
5.9 共享變量/
5.9.1 廣播變量/
5.9.2 累加器/
5.10【實戰(zhàn)案例】共享單車租賃數(shù)據(jù)分析/
5.10.1 數(shù)據(jù)集成/
5.10.2 不同月份的租賃數(shù)據(jù)分析/
5.10.3 不同時間的租賃數(shù)據(jù)分析/
5.10.4 不同周期的租賃數(shù)據(jù)分析/
5.10.5 不同維度的租賃數(shù)據(jù)分析/
5.10.6 天氣對租賃需求的影響/
5.10.7 溫度、風(fēng)速對租賃需求的影響/
5.11 本章小結(jié)/
第6章 結(jié)構(gòu)化數(shù)據(jù)處理Spark SQL/
6.1 Spark SQL概述/
6.1.1 什么是Spark SQL/
6.1.2 Spark SQL的特點/
6.2 Spark SQL的發(fā)展歷程/
6.2.1 從HDFS到Hive/
6.2.2 從Hive到Shark/
6.2.3 從Shark到Spark SQL/
6.3 SparkSession介紹/
6.4 DataFrame概述/
6.4.1 什么是DataFrame/
6.4.2 DataFrame的組成/
6.5 DataFrame的創(chuàng)建/
6.5.1 通過RDD創(chuàng)建/
6.5.2 通過Pandas的DataFrame創(chuàng)建/
6.5.3 通過外部數(shù)據(jù)創(chuàng)建/
6.6 DataFrame的基本操作/
6.6.1 DSL語法風(fēng)格/
6.6.2 Spark Join策略介紹/
6.6.3 SQL語法風(fēng)格/
6.7 DataFrame的函數(shù)操作/
6.7.1 內(nèi)置函數(shù)/
6.7.2 窗口函數(shù)/
6.7.3 自定義函數(shù)/
6.8 DataFrame的數(shù)據(jù)清洗/
6.8.1 刪除重復(fù)行/
6.8.2 缺失值的處理/
6.9 DataFrame的持久化/
6.10 DataFrame的數(shù)據(jù)寫出/
6.10.1 寫出數(shù)據(jù)到文件/
6.10.2 寫出數(shù)據(jù)到數(shù)據(jù)庫/
6.11【實戰(zhàn)案例】世界杯數(shù)據(jù)可視化分析/
6.11.1 世界杯成績匯總信息分析/
6.11.2 世界杯比賽信息分析/
6.12 本章小結(jié)/
第7章 集成Hive數(shù)據(jù)倉庫/
7.1 Spark on Hive操作數(shù)據(jù)倉庫/
7.1.1 安裝Hive/
7.1.2 啟動元數(shù)據(jù)服務(wù)/
7.1.3 配置Spark on Hive/
7.1.4 驗證Spark on Hive/
7.2 使用MySQL替換Hive元數(shù)據(jù)服務(wù)/
7.2.1 初始化MySQL/
7.2.2 配置Spark on MySQL/
7.2.3 驗證Spark on MySQL/
7.3【實戰(zhàn)案例】基于Hive數(shù)據(jù)倉庫的電商數(shù)據(jù)分析/
7.3.1 數(shù)據(jù)集成/
7.3.2 爆款產(chǎn)品分析/
7.3.3 月交易情況分析/
7.3.4 忠誠客戶分析/
7.3.5 客戶區(qū)域分析/
7.4 本章小結(jié)/
第8章 Spark Streaming流式數(shù)據(jù)處理/
8.1 流式數(shù)據(jù)處理概述/
8.1.1 靜態(tài)數(shù)據(jù)和流式數(shù)據(jù)/
8.1.2 批量計算和實時計算/
8.1.3 流式計算/
8.2 Spark Streaming概述/
8.3 StreamingContext介紹/
8.4 DStream介紹/
8.5 DStream的創(chuàng)建/
8.5.1 通過文件創(chuàng)建/
8.5.2 通過套接字創(chuàng)建/
8.5.3 通過RDD隊列創(chuàng)建/
8.6 DStream的Transformation操作/
8.6.1 無狀態(tài)轉(zhuǎn)換/
8.6.2 有狀態(tài)轉(zhuǎn)換/
8.7 DStream的輸出操作/
8.8 DStream的SQL操作/
8.9 DStream的持久化/
8.10【實戰(zhàn)案例】地震數(shù)據(jù)處理分析/
8.10.1 數(shù)據(jù)集成/
8.10.2 震級大小分布分析/
8.10.3 震源深度分布分析/
8.10.4 震中坐標分布分析/
8.10.5 中等地震分布分析/
8.11 本章小結(jié)/
第9章 Structured Streaming結(jié)構(gòu)化流處理/
9.1 編程模型/
9.1.1 基本概念/
9.1.2 事件時間和延遲數(shù)據(jù)/
9.1.3 容錯語義/
9.2 流式DataFrame的創(chuàng)建/
9.2.1 通過文件源創(chuàng)建/
9.2.2 通過Socket源創(chuàng)建/
9.2.3 通過Rate源創(chuàng)建/
9.2.4 通過Kafka源創(chuàng)建/
9.3 流式DataFrame的操作/
9.3.1 事件時間窗口/
9.3.2 處理延遲數(shù)據(jù)和水印/
9.3.3 連接操作/
9.3.4 消除重復(fù)數(shù)據(jù)/
9.3.5 不支持的操作/
9.4 啟動流式處理查詢/
9.4.1 輸出模式/
9.4.2 輸出接收器/
9.4.3 觸發(fā)器/
9.5 管理流式查詢/
9.6 監(jiān)控流式查詢/
9.7【實戰(zhàn)案例】氣象數(shù)據(jù)處理分析/
9.7.1 數(shù)據(jù)集成/
9.7.2 云量分布分析/
9.7.3 氣溫分布分析/
9.7.4 降水量分布分析/
9.8 本章小結(jié)/
第10章 Spark機器學(xué)習(xí)庫MLlib/
10.1 機器學(xué)習(xí)介紹/
10.1.1 基本概念/
10.1.2 評估指標/
10.1.3 主要過程/
10.1.4 基于大數(shù)據(jù)的機器學(xué)習(xí)/
10.2 MLlib介紹/
10.3 數(shù)據(jù)預(yù)處理/
10.3.1 缺失值處理/
10.3.2 無量綱化處理/
10.3.3 特征數(shù)據(jù)處理/
10.4 特征提取和轉(zhuǎn)換/
10.5 回歸算法介紹/
10.5.1 線性回歸算法介紹/
10.5.2 回歸樹算法介紹/
10.6 分類算法介紹/
10.6.1 邏輯回歸算法介紹/
10.6.2 支持向量機算法介紹/
10.7聚類算法介紹/
10.7.1K-means算法介紹/
10.7.2高斯混合模型介紹/
10.8【實戰(zhàn)案例】信用卡欺詐數(shù)據(jù)分析/
10.8.1 數(shù)據(jù)預(yù)覽/
10.8.2 機器學(xué)習(xí)訓(xùn)練/
10.9 本章小結(jié)/
第11章 綜合實戰(zhàn):基于協(xié)同過濾的圖書推薦系統(tǒng)/
11.1 項目介紹/
11.2 協(xié)同過濾算法/
11.2.1 協(xié)同過濾算法介紹/
11.2.2 相似度度量/
11.2.3 交替最小二乘法/
11.3 項目實現(xiàn)/
11.3.1 數(shù)據(jù)集成/
11.3.2 數(shù)據(jù)分析/
11.3.3 結(jié)果導(dǎo)出/
11.4 數(shù)據(jù)可視化/
11.4.1 Flask框架介紹/
11.4.2 推薦結(jié)果展示/
11.5 項目部署/
11.6 本章小結(jié)/
參考文獻/