大數據時代的資料庫處理: Spark SQL親自動手做 (熱銷版) | 誠品線上

大數據時代的資料庫處理: Spark SQL親自動手做 (熱銷版)

作者 紀涵/ 靖曉文/ 趙政達
出版社 佳魁資訊股份有限公司
商品描述 大數據時代的資料庫處理: Spark SQL親自動手做 (熱銷版):全書分為4篇,共9章,第一篇講解SparkSQL發展歷史和開發環境搭建。第二篇講解SparkSQL實例,幫助讀者掌握SparkSQL

內容簡介

內容簡介 全書分為4篇,共9章,第一篇講解Spark SQL 發展歷史和開發環境搭建。第二篇講解Spark SQL 實例,幫助讀者掌握Spark SQL的入門操作,瞭解Spark RDD、DataFrame和DataSet,並熟悉 DataFrame 各種操作。第三篇講解基於WiFi探針的商業大數據分析專案,實例中包含資料獲取、預處理、存儲、利用Spark SQL 挖掘資料,一步步帶領讀者學習Spark SQL強大的資料採擷功能。第四篇講解Spark SQL 最佳化的知識。適用:Spark初學者、Spark資料分析人員以及Spark程式開發人員,也可作為大專院校和培訓機構等相關專業的師生教學參考。

作者介紹

作者介紹 紀涵, 靖曉文, 趙政達紀 涵資料採擷、雲計算愛好者,曾負責多個中小型網站的開發維護工作,參與開發設計多款面向校園服務的App,與多個基於Hadoop、Spark平台的大數據應用,現主要研究方向為機器學習、資料採擷。

產品目錄

產品目錄 第一部分 入門篇1初識Spark SQL 1.1 Spark SQL的前世今生1.2 Spark SQL能做什麼2 Spark安裝、程式設計環境架設以及包裝傳送2.1 Spark的簡易安裝2.2 準備撰寫Spark應用程式的IDEA環境2.3 將撰寫好的Spark應用程式套件裝成jar傳送到Spark上第二部分 基礎篇3 Spark上的RDD程式設計3.1 RDD基礎3.2 RDD簡單實例—wordcount 3.3 建立RDD 3.4 RDD操作3.5 向Spark傳遞函數3.6 常見的轉化操作和行動操作3.7 深入了解RDD 3.8 RDD 快取、持久化3.9 RDD checkpoint容錯機制4 Spark SQL程式設計入門4.1 Spark SQL概述4.2 Spark SQL程式設計入門範例5 Spark SQL的DataFrame操作大全5.1 由JSON檔案產生所需的DataFrame物件5.2 DataFrame上的行動操作5.3 DataFrame上的轉化操作6 Spark SQL支援的多種資料來源6.1 概述6.2 典型結構化資料來源第三部分 實作篇7 Spark SQL 工程實戰之以WiFi探針為基礎的商業大數據分析技術7.1 功能需求7.2 系統架構7.3 功能設計7.4 資料庫結構7.5 本章小結8 第一個Spark SQL應用程式8.1 完全分散式環境架設8.2 資料清洗8.3 資料處理流程8.4 Spark程式遠端偵錯8.5 Spark的Web介面8.6 本章小結第四部分 最佳化篇9 讓Spark程式再快一點9.1 Spark執行流程9.2 Spark記憶體簡介9.3 Spark的一些概念9.4 Spark程式設計四大守則9.5 Spark最佳化七式9.6 解決資料傾斜問題9.7 Spark 執行引擎Tungsten 簡介9.8 Spark SQL解析引擎Catalyst 簡介9.9 本章小結

商品規格

書名 / 大數據時代的資料庫處理: Spark SQL親自動手做 (熱銷版)
作者 / 紀涵 靖曉文 趙政達
簡介 / 大數據時代的資料庫處理: Spark SQL親自動手做 (熱銷版):全書分為4篇,共9章,第一篇講解SparkSQL發展歷史和開發環境搭建。第二篇講解SparkSQL實例,幫助讀者掌握SparkSQL
出版社 / 佳魁資訊股份有限公司
ISBN13 / 9789863797814
ISBN10 / 9863797812
EAN / 9789863797814
誠品26碼 / 2681815523007
頁數 / 272
開數 / 18K
注音版 /
裝訂 / P:平裝
語言 / 1:中文 繁體
尺寸 / 17X23X1.4CM
級別 / N:無

最佳賣點

最佳賣點 : Spark SQL是 Spark大數據框架的一部分,支援使用標準SQL查詢和HiveQL來讀寫資料,可用於結構化資料處理,並可以執行類似SQL的Spark資料查詢,有助於開發人員更快地建置和執行Spark程式。

試閱文字

自序 : 前 言
  我們處於一個資料爆炸的時代!
  大量湧現的智慧型手機、平板、可穿戴裝置及物聯網裝置每時每刻都在產生新的資料,然而帶來革命性變革的並非巨量資料本身,而是我們如何從這些資料中採擷到有價值的資訊,來輔助我們做出更加智慧的決策。我們知道,在生產環境下,所謂的大數據常常是由數千萬筆、上億筆具有多個預先定義欄位的資料單元組成的資料集,是不是很像傳統關聯式資料庫的二維資料表呢?那麼我們是否也能找到一個像SQL 查詢那樣簡便的工具來高效率地分析處理大數據領域中的巨量結構化資料呢?沒錯,這個工具就是Spark SQL。
  Spark SQL 是Spark 用來操作結構化資料的進階模組,在程式中透過引用SparkSQL 模組,我們便可以像從前在關聯式資料庫利用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 程式再快一點。
  
繁體中文版注意事項
  為維持原作者內容,本書部分畫面會保留原作者之簡體中文介面,請讀者自行參照內文對照。
  
本書適合讀者
  本書適合於學習資料採擷、有巨量結構化資料分析需求的大數據從業者及同好閱讀,也可以作為大專院校相關科系的教材。建議在學習本書內容的過程中,理論結合實務,獨立進行一些程式的撰寫,採取開放式的實驗方法,即讀者自行準備實驗資料和實驗環境,解決實際問題,最後達到理論結合實務的目的。
  本書在寫作過程中獲得家人以及編輯的大力支持,在此對他們一併表示感謝。本書由紀涵(負責基礎篇的撰寫)主筆,其他參與著作的還有靖曉文(負責實作篇的撰寫)、趙政達(負責入門篇、最佳化篇的撰寫),排名不分先後。

試閱文字

內文 : 3.1.1 建立RDD
使用者可以使用兩種方法建立 RDD:讀取一個外部資料集,或在驅動程式裡轉
化驅動程式中的物件集合(例如 list 和 set)為RDD。
􀁠 例3-1:使用 textFile() 建立一個字串的 RDD
scala> val distFile = sc.textFile("data.txt")
distFile: org.apache.spark.rdd.RDD[String] = data.txt MapPartitionsRDD[10] at
textFile at :26
3.1.2 RDD 轉化操作、行動操作
建立出來後,RDD 支援兩種型態的操作:轉化操作(transformations)和行動
操作(actions)。
� 轉化操作
轉化操作會由一個RDD 產生一個新的RDD,例如,RDD 透過map(func) 函數
檢查並利用func 處理每一個元素,進而產生新的RDD 就是一個常見的轉化操
作。
在範例3-2 中,map 檢查RDD[String] 中的每一個String 物件,此時的每一個
String 物件表示的便是檔案的每一行,進而借助傳入map 的(s => s.length) 匿
名函數求出每一行(String 物件)長度,轉化為記錄著每一行長度的新的RDD
(lineLengths)。
􀁠 例3-2:呼叫轉化操作map()
val lines = sc.textFile("data.txt")
val lineLengths = lines.map(s => s.length)
� 行動操作
另一方面,行動操作會對 RDD 計算出一個結果,是向應用程式傳回值,或向