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