- Spark SQL入門與實踐指南
- 紀涵
- 2105字
- 2019-12-06 16:38:15
前言
我們處于一個數據爆炸的時代!
大量涌現的智能手機、平板、可穿戴設備及物聯網設備每時每刻都在產生新的數據,然而帶來革命性變革的并非海量數據本身,而是我們如何從這些數據中挖掘到有價值的信息,來輔助我們做出更加智能的決策。我們知道,在生產環境下,所謂的大數據往往是由數千萬條、上億條具有多個預定義字段的數據單元組成的數據集,是不是很像傳統關系型數據庫的二維數據表呢?那么我們是否也能找到一個像SQL查詢那樣簡便的工具來高效地分析處理大數據領域中的海量結構化數據呢?沒錯,這個工具就是Spark SQL。
Spark SQL是Spark用來操作結構化數據的高級模塊,在程序中通過引入Spark SQL模塊,我們便可以像從前在關系型數據庫利用SQL(結構化查詢語言)分析關系型數據庫表一樣簡單快捷地在Spark大數據分析平臺上對海量結構化數據進行快速分析,而Spark平臺屏蔽了底層分布式存儲、計算、通信的細節以及作業解析、調度的細節,使我們開發者僅需關注如何利用SQL進行數據分析的程序邏輯就可以方便地操控集群來分析我們的數據。
本書內容
本書共分為四篇:入門篇、基礎篇、實踐篇、調優篇,所有代碼均采用簡潔而優雅的Scala語言編寫,Spark框架也是使用Scala語言編寫的。
第一部分 入門篇(第1、2章)
第1章簡要介紹Spark的誕生、Spark SQL的發展歷史以及Spark SQL的用處等內容,使讀者快速了解Spark SQL背景知識,為以后的學習奠定基礎。
第2章通過講解Spark SQL開發環境的搭建、Spark作業的打包提交、常見問題的解答,并結合大量圖示,使讀者快速掌握開發環境的搭建以及提交應用程序到集群上,為后面章節的學習奠定堅實的基礎。
第二部分 基礎篇(第3、4、5、6章)
第3章是真正開始學習Spark SQL必要的先修課,其中詳盡地介紹了Spark框架對數據的核心抽象——RDD(彈性分布式數據集)的方方面面。先介紹與RDD相關的基本概念,例如轉化操作、行動操作、惰性求值、緩存,講解的過程伴隨著豐富的示例,旨在提高讀者對RDD的理解與加強讀者的RDD編程基礎。在講明白RDD中基礎內容的同時,又深入地剖析了疑點、難點,例如RDD Lineage(RDD依賴關系圖)、向Spark傳遞函數、對閉包的理解等。在之前對基本類型RDD的學習基礎上,又引入了對特殊類RDD——鍵值對RDD的大致介紹,在鍵值對RDD介紹中對combineByKey操作的講解,深入地從代碼實現的角度洞悉了Spark分布式計算的實質,旨在幫助對RDD有著濃厚興趣的讀者做進一步的拓展。最后,站在RDD設計者的角度重新審視了RDD緩存、持久化、checkpoint機制,從而詮釋了RDD為什么能夠很好地適應大數據分析業務的特點,有天然強大的容錯性、易恢復性和高效性。
第4章對Spark高級模塊——Spark SQL,也就是本書的主題,進行了簡明扼要的概述,并講述了相應的Spark SQL編程基礎。先是通過與前一章所學的Spark對數據的核心抽象——RDD的對比,引出了Spark SQL中核心的數據抽象——DataFrame,講解了兩者的異同,點明了Spark SQL是針對結構化數據處理的高級模塊的原因在于其內置豐富結構信息的數據抽象。后一部分通過豐富的示例講解了如何利用Spark SQL模塊來編程的主要步驟,例如,從結構化數據源中創建DataFrames、DataFrames基本操作以及執行SQL查詢等。
第5、6章屬于Spark SQL編程的進階內容,也是我們將Spark SQL應用于生產、科研計算環境下,真正開始分析多類數據源、實現各種復雜業務需求必須要掌握的知識。在第5章里,我們以包含簡單且典型的學生信息表的JSON文件作為數據源,深入對DataFrame豐富強大的API進行研究,以操作講解加示例的形式包攬了DataFrame中每一個常用的行動、轉化操作,進而幫助讀者輕松高效地組合使用DataFrame所提供的API來實現業務需求。在第6章里,介紹了Spark SQL可處理的各種數據源,包括Hive表、JSON和Parquet文件等,從廣度上使讀者了解Spark SQL在大數據領域對典型結構化數據源的皆可處理性,從而使讀者真正在工作中掌握一門結構化數據的分析利器。
第三部分 實踐篇(第7、8章)
第7章通過講解大型商業實例項目(基于WiFi探針的商業大數據分析技術)的功能需求、系統架構、功能設計、數據庫結構來幫助讀者理解如何在實際開發中應用Spark SQL來處理結構化數據,加強讀者的工程思維,同時為第8章的學習做好鋪墊。
第8章通過講解分布式環境搭建以及項目代碼的解析來幫助讀者進一步理解Spark SQL應用程序的執行過程,在后一部分介紹了Spark SQL程序的遠程調試方法和Spark的Web界面,幫助讀者更加方便地了解程序的運行狀態。
第四部分 調優篇(第9章)
調優篇由第9章組成,本篇從Spark的執行流程到內存以及任務的劃分,再到Spark應用程序的編寫技巧,接著到Spark本身的調優,最后引出數據傾斜的解決思路,層層遞進,逐步解析Spark的調優思想。最后以對Spark執行引擎Tungsten與Spark SQL的解析引擎Catalyst的介紹作為本部分的結尾。筆者將在本篇中帶領讀者掌握Spark的調優方式以及思想,讓Spark程序再快一點。
本書適合讀者
本書適合于學習數據挖掘、有海量結構化數據分析需求的大數據從業者及愛好者閱讀,也可以作為高等院校相關專業的教材。建議在學習本書內容的過程中,理論聯系實際,獨立進行一些代碼的編寫,采取開放式的實驗方法,即讀者自行準備實驗數據和實驗環境,解決實際問題,最終達到理論聯系實際的目的。
本書在寫作過程中得到了家人以及本書編輯的大力支持,在此對他們一并表示感謝。
本書由紀涵(主要負責基礎篇的編寫)主筆,其他參與著作的還有靖曉文(主要負責實踐篇的編寫)、趙政達(主要負責入門篇、調優篇的編寫),排名不分先后。
紀涵
2018年2月