關(guān)于我們
書單推薦
新書推薦
|
Spark大數(shù)據(jù)算法 利用這本書,你將學(xué)習(xí)以下內(nèi)容:了解如何選擇Spark轉(zhuǎn)換實現(xiàn)優(yōu)化的解決方案。探索強大的轉(zhuǎn)換和歸約,包括reduceByKey()、combineByKey()和mapPartitions()。理解數(shù)據(jù)分區(qū)以實現(xiàn)優(yōu)化查詢。使用PySpark設(shè)計模式構(gòu)建和應(yīng)用模型。對圖數(shù)據(jù)應(yīng)用motif查找算法。使用GraphFrames API分析圖數(shù)據(jù)。對臨床醫(yī)學(xué)和基因組數(shù)據(jù)應(yīng)用PySpark算法。學(xué)習(xí)如何在ML算法中使用和應(yīng)用特征工程。了解并使用實用的數(shù)據(jù)設(shè)計模式。 編輯推薦 前言Spark 已經(jīng)成為大規(guī)模數(shù)據(jù)分析領(lǐng)域事實上的標準。自從幾年前Spark 誕生以來,我就一直在使用和教授Spark,在抽取、轉(zhuǎn)換、加載(ETL)過程、分布式算法開發(fā)以及大規(guī)模數(shù)據(jù)分析方面,Spark 都取得了長足的進步。我最初是用Java 使用Spark,但我發(fā)現(xiàn),雖然代碼相當穩(wěn)定,但寫的代碼行很長,這會讓代碼很難閱讀。在這本書中,我決定使用PySpark(Spark 的Python API),因為用Python 展現(xiàn)Spark 的強大功能更為容易:代碼簡短,易于閱讀,而且易于維護。PySpark 很強大,同時使用很簡單,利用PySpark 可以用一組簡單的轉(zhuǎn)換和動作實現(xiàn)任何ETL 或分布式算法。為什么寫這本書這是一本關(guān)于使用PySpark 實現(xiàn)數(shù)據(jù)分析的入門書。這本書提供了一組原則和示例,旨在幫助軟件和數(shù)據(jù)工程師用盡可能簡單的方式解決數(shù)據(jù)問題。我們知道,解決數(shù)據(jù)問題有很多方法:利用PySpark,我們能夠為復(fù)雜的問題編寫簡單的代碼。這正是我想通過本書表達的座右銘:保持簡單并使用參數(shù),使你的解決方案能夠被其他開發(fā)人員重用。我的目標是教讀者考慮數(shù)據(jù),了解其來源和最終的預(yù)期形式,并展示如何使用基本數(shù)據(jù)轉(zhuǎn)換模式解決各種數(shù)據(jù)問題。本書面向的讀者為了有效地使用這本書,了解Python 編程語言的基礎(chǔ)知識會很有幫助,例如如何使用條件語句(if-then-else)、迭代處理列表以及定義和調(diào)用函數(shù)。不過,如果你有其他編程語言背景(如Java 或Scala),還不了解Python,仍然可以使用這本書,因為我會提供Spark 和PySpark 的大量介紹。這本書主要面向那些想要分析大量數(shù)據(jù)并使用Spark 引擎和PySpark 開發(fā)分布式算法的人。我提供了一些簡單的示例,會展示如何用PySpark 完成ETL 操作和編寫分布式算法。我們采用了便于剪切粘貼的方式來編寫這些代碼示例,使你能輕松完成工作。GitHub(https://github.com/mahmoudparsian/dataalgorithms-with-spark)提供的示例代碼是一個很好的資源,可以由此起步著手完成你自己的數(shù)據(jù)項目。本書內(nèi)容組織本書共12 章,分為3 部分:第I 部分,基礎(chǔ)知識。前4 章涵蓋Spark 和PySpark 的基礎(chǔ)知識,并介紹數(shù)據(jù)轉(zhuǎn)換,如映射器、過濾器和歸約器。這幾章提供了很多實際示例,可以幫助你著手開發(fā)自己的PySpark 項目。約95% 的數(shù)據(jù)問題都可以通過使用本書前4 章介紹的簡單PySpark 數(shù)據(jù)轉(zhuǎn)換(如map()、flatMap()、filter() 和reduceByKey())來解決。下面詳細說明這幾章的內(nèi)容: 第1 章,Spark 和PySpark 簡介,提供了數(shù)據(jù)算法的高層概述,并介紹了如何使用Spark 和PySpark 解決數(shù)據(jù)分析問題。 第2 章,轉(zhuǎn)換實戰(zhàn),展示了如何使用Spark 轉(zhuǎn)換(映射器、過濾器和歸約器)解決實際數(shù)據(jù)問題。 第3 章, 映射器轉(zhuǎn)換, 介紹了最常用的映射器轉(zhuǎn)換:map()、filter()、flatMap() 和mapPartitions()。 第4 章,Spark 中的歸約,重點介紹歸約轉(zhuǎn)換(如reduceByKey()、groupByKey() 和combineByKey()),它們在按鍵分組數(shù)據(jù)時會發(fā)揮非常重要的作用。這一章給出了很多簡單但很有用的例子,確保你能有效地使用這些歸約。第II 部分,處理數(shù)據(jù)。接下來的4 章介紹數(shù)據(jù)分區(qū)、圖算法、讀/ 寫多個不同數(shù)據(jù)源的數(shù)據(jù),以及排名算法: 第5 章,數(shù)據(jù)分區(qū),介紹按特定數(shù)據(jù)列對數(shù)據(jù)物理分區(qū)的函數(shù)。通過這種分區(qū),SQL 查詢(例如,Amazon Athena 或Google BigQuery 中)能分析一個數(shù)據(jù)片而不是整個數(shù)據(jù)集,這將提高查詢性能。 第6 章,圖算法,會介紹最重要的Spark 外部包之一:GraphFrames,可以在Spark 分布式環(huán)境中用來分析大型圖。 第7 章,與外部數(shù)據(jù)源交互,會展示如何從各種不同數(shù)據(jù)源讀寫數(shù)據(jù)。 第8 章,排名算法,介紹了兩種重要的排名算法,PageRank(用于搜索引擎)和秩序乘積(用于基因分析)。第III 部分,數(shù)據(jù)設(shè)計模式。最后4 章介紹實用的數(shù)據(jù)設(shè)計模式,我們會通過具體的例子采用一種非正式的方式展示這些設(shè)計模式: 第9 章,經(jīng)典數(shù)據(jù)設(shè)計模式,將介紹常用于解決各種數(shù)據(jù)問題的一些基本數(shù)據(jù)設(shè)計模式或可重用的解決方案。例如輸入- 映射- 輸出和輸入-過濾- 輸出。 第10 章,實用數(shù)據(jù)設(shè)計模式,介紹了常見的實用數(shù)據(jù)設(shè)計模式,用于完成組合、匯總、過濾和組織數(shù)據(jù)等任務(wù)。我們會以非正式的方式介紹這些模式,并提供實際示例。 第11 章,連接設(shè)計模式,介紹連接兩個或多個數(shù)據(jù)集的簡單模式;為了提高連接算法的效率,這一章還會討論一些性能準則。 第12 章,PySpark 中的特征工程,介紹了開發(fā)機器學(xué)習(xí)算法中使用的最常見的特征工程技術(shù)。額外章節(jié)因為我不希望這本書過于龐大,本書的GitHub 存儲庫(https://github.com/mahmoudparsian/dataalgorithms-with-spark)中還提供了額外章節(jié),介紹關(guān)于TF-IDF、相關(guān)性和k-mers 等主題的附加內(nèi)容。排版約定本書采用以下排版約定。斜體(Italic)表示新術(shù)語、URL、電子郵件地址、文件名和文件擴展名。等寬字體(Constant Width)表示程序清單,在段落內(nèi)表示程序元素,例如變量、函數(shù)名稱、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。粗體等寬字體(Constant width bold)表示應(yīng)由用戶原封不動輸入的命令或其他文本。斜體等寬字體(Constant width italic)表示應(yīng)該替換成用戶提供值的文本,或者由上下文決定的值。使用代碼示例這本書的補充材料( 代碼示例、練習(xí)等) 可以從https://github.com/mahmoudparsian/data-algorithms-with-spark 下載。如果使用代碼示例時有技術(shù)問題或遇到其他問題,請通過以下email 聯(lián)系我們:mahmoud.parsian@yahoo.com。這本書的目的就是要幫助你完成工作。一般來講,你可以在你的程序和文檔中使用這些代碼,不需要聯(lián)系我們來得到許可,除非你直接復(fù)制了大部分的代碼。例如,如果你在編寫一個程序,使用了本書中的多段代碼,這并不需要得到許可。但是出售或發(fā)行OReilly 書示例代碼則需要得到許可;卮饐栴}時如果引用了這本書的文字和示例代碼,這不需要得到許可。但是如果你的產(chǎn)品的文檔借用了本書中的大量示例代碼,則需要得到許可。我們希望但不嚴格要求標明引用出處。引用信息通常包括書名、作者、出版商和ISBN。例如Data Algorithms with Spark by Mahmoud Parsian (OReilly).Copyright 2022 Mahmoud Parsian, 978-1-492-08238-5。如果你認為你在使用代碼示例時超出了合理使用范圍或者上述許可范圍,可以隨時聯(lián)系我們:permissions@oreilly.com。OReilly 在線學(xué)習(xí)平臺(OReilly Online Learning)近40 年來,OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。公司獨有的專家和改革創(chuàng)新者網(wǎng)絡(luò)通過OReilly 書籍、文章以及在線學(xué)習(xí)平臺,分享他們的專業(yè)知識和實踐經(jīng)驗。OReilly 在線學(xué)習(xí)平臺按照您的需要提供實時培訓(xùn)課程、深入學(xué)習(xí)渠道、交互式編程環(huán)境以及來自O(shè)Reilly 和其他200 多家出版商的大量書籍與視頻資料。更多信息,請訪問網(wǎng)站:https://www.oreilly.com/。聯(lián)系我們?nèi)魏斡嘘P(guān)本書的意見或疑問,請按照以下地址聯(lián)系出版社。美國:OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區(qū)西直門南大街2 號成銘大廈C 座807 室(100035)奧萊利技術(shù)咨詢(北京)有限公司針對這本書,我們還建有一個網(wǎng)頁,列出了有關(guān)勘誤、示例和其他信息?梢酝ㄟ^以下地址訪問這個頁面:https://oreil.ly/data-algorithms-with-spark。如果對這本書有什么意見,或者詢問技術(shù)上的問題,請發(fā)送電子郵件至errata@oreilly.com.cn。有關(guān)我們的圖書和課程,更多新聞和信息請訪問我們的網(wǎng)站:http://www.oreilly.com。我們的LinkedIn:https://linkedin.com/company/oreilly-media。我們的Twitter:http://twitter.com/oreillymedia。我們的YouTube:http://youtube.com/oreillymedia。致謝寫這本書的想法是Jess Haberman(OReilly Media 高級策劃編輯)提出來的。非常感謝她伸出援手。謝謝你,Jess !感謝Melissa Potter(OReilly Media 內(nèi)容開發(fā)編輯),她從這個項目之初就不知疲倦地與我一同工作,她的幫助使這本書變得更好。非常感謝,Melissa !非常感謝文字編輯Rachel Head,她在整本書的編輯中做了大量工作。如果你能讀懂這本書,那都是Rachel 的功勞。我想對Christopher Faucher(產(chǎn)品編輯)衷心說聲謝謝,你出色的工作確保我們達成了最后期限,并且一切順利。一本書付梓出版絕不是一件容易的事情,但Christopher很出色地完成了這個工作。非常感謝技術(shù)審校Parviz Deyhim 和Benjamin Muskalla 對這本書細致的審查,以及后續(xù)的評論、更正和建議。還要特別感謝我的博士導(dǎo)師和親愛的朋友Ramachandran Krishnaswamy 博士,他讓我學(xué)到了很多東西;我會永遠珍惜與他的友誼。我在GitHub 上為所有章節(jié)提供了PySpark 解決方案,作為補充,Deepak Kumar和Biman Mandal 提供了Scala 解決方案,對讀者來說這是一個很好的資源。謝謝你們,Deepak 和Biman。最后(但絕不是不重要),非常感謝Matei Zaharia 博士(Apache Spark 創(chuàng)始人)為這本書寫了序,他的美言讓我倍感榮幸。 Mahmoud Parsian,計算機科學(xué)博士,作為開發(fā)人員、設(shè)計師、架構(gòu)師和作者,他是一位有30多年豐富經(jīng)驗的軟件專業(yè)人士。在過去的15年里,他一直在從事Java服務(wù)器端計算、數(shù)據(jù)庫、MapReduce、Spark和分布式計算的相關(guān)工作。Parsian博士領(lǐng)導(dǎo)了Illumina的大數(shù)據(jù)團隊,專注于大規(guī);蚪M分析以及使用Spark和PySpark的分布式計算。Parsian博士還在圣克拉拉大學(xué)教授機器學(xué)習(xí)和大數(shù)據(jù)建模和分析課程。 目錄
你還可能感興趣
我要評論
|