自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)科學家必備工具有哪些?

大數(shù)據(jù)
在這一章中,我們會探索數(shù)據(jù)科學環(huán)境中常用的軟件。不是所有在這里提到的軟件都會在你的工作中用到,但了解它們會讓你擁有更多選擇。

[[169391]]

當數(shù)據(jù)科學家需要使用某些軟件時,其中一部分我們已經(jīng)在之前的章節(jié)中做過介紹,這些軟件涵蓋了數(shù)據(jù)科學家所需要的基礎(chǔ)專業(yè)內(nèi)容。實際的工作范疇可能會超越求職時候的工作描述,這也是IT工作的常態(tài)之一。這在某種程度上是好的,因為它提供了學習新技能的機會,而這也是數(shù)據(jù)科學領(lǐng)域最引人入勝的方面之一。

在這一章中,我們會探索數(shù)據(jù)科學環(huán)境中常用的軟件。不是所有在這里提到的軟件都會在你的工作中用到,但了解它們會讓你擁有更多選擇。特別是我們會提到Hadoop套件的一些其他備選工具(例如Spark、Storm等),許多功能強大的面向?qū)ο缶幊陶Z言(Java、C++、C#、Ruby和Python),現(xiàn)有的數(shù)據(jù)分析軟件(R、Matlab、SPSS、SAS或是Stata),你可能會用到的虛擬化程序以及大數(shù)據(jù)集成系統(tǒng)(例如IBM的BigInsights、Cloudera等)。我們還會看看你可能接觸到的其他軟件,例如GIT、Excel、Eclipse、Emcien以及Oracle。注意這個列表只是告訴你這一領(lǐng)域的主流軟件有哪些,但它們并不一定是你在未來工作中的真實環(huán)境下所使用的工具。一些公司可能會用到它所在行業(yè)的專業(yè)軟件,在你入職的時候也許會被要求你去熟悉這些軟件。了解這個列表中的大部分軟件會讓你工作地相對輕松和明確。

1 .Hadoop套件和朋友們

Hadoop在過去的幾年里,幾乎成為大數(shù)據(jù)的代名詞。這是數(shù)據(jù)科學家的兵器庫中的主要支撐。知道Hadoop不只是一個程序是非常重要的,它更像一組工具(類似于微軟的Office)。這個套件被用于傳輸,保存和處理大數(shù)據(jù)。它還包含有一個調(diào)度器(Oozie)、元數(shù)據(jù)和表格管理架構(gòu)(HCatalog)。所有在Hadoop中處理數(shù)據(jù)的任務(wù)都是分布在安裝了Hadoop的所有機器集群中的,這些任務(wù)可以是面向?qū)ο蟪绦?OOP)代碼、數(shù)據(jù)分析程序、數(shù)據(jù)圖形化腳本以及其他具有有限處理時間(finite process time)特征和對數(shù)據(jù)分析有用的任務(wù)。Hadoop會確保不管你對數(shù)據(jù)做什么樣的操作都能以高效的方式完成,并以直觀的方式呈現(xiàn)。

Hadoop并沒有一個對用戶友好的軟件環(huán)境,如圖1所示,這是一個典型的Hadoop任務(wù)的樣子。

Hadoop套件由以下幾個組件組成,所有的組件都很重要。

MapReduce由Google創(chuàng)建,并且是Hadoop的主要組件。正如在之前的部分我們曾提到過的那樣,這是任何大數(shù)據(jù)技術(shù)的核心。盡管這是Hadoop固有的特性,但它也可以在其他的大數(shù)據(jù)程序,例如MPP和NoSQL數(shù)據(jù)庫(例如,MongoDB)。MapReduce最初是具有商業(yè)所有權(quán)的,但隨著Yahoo在2006年提供了慷慨的資金支持,它以Hadoop的開源形式出現(xiàn),并在兩年內(nèi)迅速受到廣泛歡迎。作為一個著名的并行計算算法,它得以讓數(shù)據(jù)庫的查詢建立在一個計算機集群上,任務(wù)可以分拆成小份,并跨越整個集群的節(jié)點。

HDFS是Hadoop 分布式文件系統(tǒng)的簡稱,這是Hadoop系統(tǒng)所使用的文件系統(tǒng)。被Hadoop所處理的數(shù)據(jù)必須先導入到HDFS中,并備份在運行了Hadoop的計算機網(wǎng)絡(luò)中。它的數(shù)據(jù)極限大約在30PB。

Pig是針對Hadoop進行計算的一個高級編程語言(High-level programming language)。你可以將它視為Hadoop生態(tài)系統(tǒng)中各種操作的控制元件。它的性能是可擴展的。

Hive是一個數(shù)據(jù)倉庫程序,是以“類-SQL”語言進行訪問使用的,他是為橫跨Hadoop集群的數(shù)據(jù)設(shè)計的。并且它的性能是可擴展的。

HBase、Sqoop以及Flume是Hadoop的數(shù)據(jù)庫組件。HBase是一個可以運行在Hadoop環(huán)境上的列式數(shù)據(jù)庫。它是基于Google的BigTable設(shè)計的,并且數(shù)據(jù)極限約為1PB。另外,它比直接在HDFS上訪問數(shù)據(jù)要慢一些。這對于處理存在HBase里面的數(shù)據(jù)來說不是很好,對HBase對于歸檔和時間系列數(shù)據(jù)的計數(shù)很合適。Sqoop是一個將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導入到HDFS中的程序。Flume與此類似,它關(guān)注于收集和導入各種數(shù)據(jù)源的日志和任務(wù)數(shù)據(jù)。

Mahout是一個機器學習和數(shù)據(jù)挖掘算法的函數(shù)庫,用于對存儲在HDFS的數(shù)據(jù)進行處理。

Zookeeper服務(wù)于Hadoop有一“群”各種各樣功能的組件,所以調(diào)試管理以及協(xié)調(diào)程序是十分必要的。Zookeeper保證了整個套件的整合以及相對得簡便操作。

Hadoop套件還有一些其他的組件用來補充以上這些核心組件。而熟悉它們***的方法是去下載一個Hadoop玩一下。當需要確定基準(Benchmark)的時候,你可以選擇去讀一下教程(或者,如果你能讀一下用戶手冊則更好)。

Hadoop并不是進入大數(shù)據(jù)技術(shù)的唯一選擇。另有一個也很有意思但并不那么有名的備選方案是Storm(被Twitter、阿里巴巴、Groupon以及其他許多公司所使用)。Storm顯著快于Hadoop,同樣也是開源,而且使用起來相對簡單,是一個值得選用的Hadoop備選方案。不像Hadoop, Storm 不執(zhí)行MapReduce任務(wù),而是運行topology(拓撲)。核心的差異在于MapReduce最終會將任務(wù)結(jié)束,而topology會永遠運行或直到它被用戶終止。(你可以將它類比為操作系統(tǒng)后臺一直運行的進程)。topology可以被畫成計算圖,用以處理數(shù)據(jù)流。這些數(shù)據(jù)流的源被稱為spout(形象化為“水龍頭”),而它們會被接入bolt(形象化為“閃電”)。一個bolt可以使用任意數(shù)量的輸入源,做一些處理,并輸出新的數(shù)據(jù)流。你可以在圖2中看到Storm topology。

如圖2所示,Storm軟件中的Topology,一個值得選用的Hadoop的備選方案。你可以很容易地創(chuàng)建一個類似這樣的Topology,并比MapReduce的流程順序要直觀。

對數(shù)據(jù)使用Topology方法可以確保即使在出現(xiàn)故障的情況下也能處理出正確的結(jié)果(因為topology會持續(xù)地運行),也就是說如果計算機集群中的某一臺計算機發(fā)生了問題也不會危害到在運行在整個集群上任務(wù)的一致性。需要注意的是,Storm topology 一般是由Java、Ruby、Python和Fancy語言編寫而成。Storm軟件則是由Java和Clojure(一個與Java配合良好的函數(shù)型語言)編寫,同時它的源代碼也是這個類型技術(shù)中最為流行的項目。

這個軟件的優(yōu)勢在于它處理數(shù)據(jù)的實時性、簡單的API、可擴展性、容錯性、簡單部署、免費且開源并能夠確保數(shù)據(jù)處理,以及可以在其上使用各種編程語言。它有橫跨美國東西海岸、倫敦以及其他地區(qū),并持續(xù)壯大的用戶社區(qū)。

除了Storm這個非常流行并且提供了靈活和簡單地操作還很有前景的Hadoop的替代品之外,還有一些其他軟件同樣宣稱自己具有類似特性并嘗試挑戰(zhàn)Hadoop在大數(shù)據(jù)世界的支配權(quán)。最值得推薦的幾個軟件(在編寫本書的時候)有如下幾個。

Spark由加利福尼亞大學伯克利分校的AMP Lab開發(fā)而成。Spark是MapReduce領(lǐng)域的***玩家,它的目標是數(shù)據(jù)分析在寫入和運行端的速度更加快速。不像許多在這個領(lǐng)域的系統(tǒng),Spark使用內(nèi)存查詢數(shù)據(jù),替代了磁盤的讀寫。這樣,Spark在許多迭代算法上比Hadoop的表現(xiàn)更為優(yōu)越。它是由Scala實現(xiàn)的(參見一下部分),在寫作本書的時候,它的主要用戶是UC Berkeley的研究者和Conviva公司。

BashReduce作為一個腳本工具,BashReduce可以用標準UNIX命令(如sort、awk、grep、join等)執(zhí)行MapReduce,成為了Hadoop的另一個備選工具。它支持映射/分割、規(guī)約以及合并等功能命令。盡管它根本沒有一個分布式文件系統(tǒng),BashReduce還是將文件分布到了工作節(jié)點中,但不可避免地缺少容錯。它沒有Hadoop那么復雜,同時可以進行快速開發(fā)。除了容錯的問題之外,它還缺乏靈活性,因為BashReduce只能工作在特定的UNIX命令環(huán)境中。BashReduce是由Erik Frey(在線電臺last.fm)以及他的助手們開發(fā)。

Disco Project最初是由諾基亞(Nokia)研究院開發(fā),Disco已經(jīng)默默無聞了很多年。MapReduce作業(yè)由簡單的Python編寫,而Disco的后端是以Erlang編寫的,一個可擴展的函數(shù)型語言,內(nèi)置支持并發(fā)、容錯以及分布,使得它成為一個理想的MapReduce系統(tǒng)。與Hadoop類似,Disco分布并復制存放數(shù)據(jù),但它沒有自己的文件系統(tǒng)。由于它的高效,在作業(yè)調(diào)度方面也是值得稱道的。

GraphLab由卡內(nèi)基梅隆大學開發(fā),為機器學習應(yīng)用服務(wù)而設(shè)計,GraphLab旨在提高并行機器學習算法設(shè)計的執(zhí)行效率和正確性。GraphLab擁有它自己版本的映射(map)階段,稱為更新階段。不像MapReduce,更新階段可以讀取和修改數(shù)據(jù)的交集。它基于圖的方法使得在圖形的機器學習上更具可控性,同時提升了動態(tài)迭代算法。

HPCC 系統(tǒng)以它自己的大規(guī)模數(shù)據(jù)分析架構(gòu),HPCC試圖用Enterprise Control Language語言(ECL)更近編寫并行工作流,ECL語言是一個聲名式語言,以數(shù)據(jù)為中心的語言(有些類似于SQL、Datalog和Pig)。HPCC是用C++寫成的,根據(jù)一些人的說法,這樣使得內(nèi)存查詢更快。HPCC由于擁有自己的分布式文件系統(tǒng)而也成為Hadoop一個有力地備選工具。

Sector/Sphere以C++開發(fā),這個系統(tǒng)承諾了比Hadoop快2~4倍的性能。它由兩部分組成:Sector,安全且可擴展的分布式文件系統(tǒng),以及Sphere,在存儲節(jié)點上可以通過簡單的API接口處理Sector數(shù)據(jù)文件的并行數(shù)據(jù)處理引擎。它具有不錯的容錯性,支持廣域網(wǎng)同時兼容舊系統(tǒng)(需要做一些修改)。從2006年誕生起,它就是一個不錯的Hadoop替代方案。

還有一些并行于這些系統(tǒng)的項目,可以免費便利地開展Hadoop環(huán)境下的工作。所以,如果你想學Hadoop,并且把基礎(chǔ)的部分都掌握以后可以看看這些工具。這些項目中***的有以下幾個。

Drill是一個Hadoop插件,專注于提供一個存儲在Hadoop集群環(huán)境下的數(shù)據(jù)集的交互分析接口。它常常利用MapReduce來執(zhí)行Hadoop下的大數(shù)據(jù)的批量分析,并通過Dremel以更快的速度來處理更大規(guī)模的數(shù)據(jù)集。憑借它可以擴展到大規(guī)模服務(wù)器上的能力(它的設(shè)計目標是10000個服務(wù)器),使它成為處理真正的大數(shù)據(jù)的好選擇。如果你計劃使用Hadoop,那么它是一個值得你去研究的工具。

D3.js是數(shù)據(jù)驅(qū)動文檔(Data Driven Documents)的縮寫,D3.js是一個開源JavaScript函數(shù)庫,可以讓你編輯大數(shù)據(jù)的展示文檔。這個工具可以讓你利用網(wǎng)頁技術(shù)(例如HTML5、SVG以及CSS)來創(chuàng)建動態(tài)圖形。另外,它還提供可視化方法,例如和弦圖、氣泡圖、樹狀圖以及節(jié)點連接樹。由于它是開源的,因此這個列表還在持續(xù)地擴展著。D3.js設(shè)計的目標是運行快速和兼容于跨硬件平臺的程序。盡管它不一定會替代完全成熟的數(shù)據(jù)可視化程序(見4節(jié)),但這是一個你值得留意的好工具。D3.js是由紐約時報的圖形編輯Michael Bostock開發(fā)的。

Kafka是最早由LinkedIn所開發(fā)的消息系統(tǒng),作為社交媒體活動流和數(shù)據(jù)處理管道的基礎(chǔ)。從那以后,它的用戶群便逐漸擴大,涵蓋了各種使用數(shù)據(jù)管道和消息服務(wù)的公司。它非常高效,同時與Hadoop生態(tài)系統(tǒng)集成良好,此外,它是運行在Java環(huán)境中的,是可以跨平臺的。

Julia事實上,它不只是一個數(shù)據(jù)分析工具,而是被設(shè)計為運行在諸如Hadoop這樣的分布式計算環(huán)境中。它很穩(wěn)健,易于使用,類似于Matlab和R(見3節(jié)),同時又非??焖佟K桥cHadoop套件相襯的擴展工具,如果你傾向于編寫程序,那么這是一個可以加入你技能樹中的好語言。

Impala是一個分布式查詢執(zhí)行引擎,是為原生存儲在Apache HDFS 和Apache HBase的數(shù)據(jù)而設(shè)計的。由Cloudera開發(fā),它聚焦于數(shù)據(jù)庫而且不會使用到MapReduce。因為它避免了MapReduce作業(yè)的額外開銷,所以可以實時地返回結(jié)果。

2 .面向?qū)ο缶幊陶Z言

數(shù)據(jù)科學家需要能夠熟練處理面向?qū)ο缶幊?OOP),但比較各種面向?qū)ο缶幊陶Z言已超出了本書所要討論的范圍,所以如果非要舉個例子的話,Java是這一節(jié)中主要會討論的語言,因為它被業(yè)界熟知。像大多數(shù)面向?qū)ο笠粯樱琂ava不包含用戶圖形界面(GUI),這就是那么多人更愛用Python(它的開發(fā)者確實為它編寫了一個體面的GUI)的原因。然而,Java運行快而優(yōu)雅,同時不管是線上還是線下都有大量的學習資源。圖3是一個典型的Java程序。

圖3是一段典型的Java程序用于判斷這一年是不是閏年。這是一個識別了Java程序的編輯器視圖。

注意,部分字句的顏色和高亮顯示是由編輯器自動實現(xiàn)的(盡管不總是這樣,例如當使用記事本工具打開程序時)。同樣,間距也是可選的,用來幫助用戶編寫語句。注意大多數(shù)程序會比這段簡單的例子要長一些,也更復雜一些,但它們也可以像例子中一樣,被拆散成簡單的語句塊。

如果你花了大量的時間在編寫腳本上面(通常如果你使用文本編輯器,例如Notepad++或者Textpad),編程會讓你勞累不堪。為了減輕這種影響,在過去的許多年里,眾多集成開發(fā)環(huán)境(Integrated development environments,IDE)被開發(fā)出來。這些IDE為編程語言提供了額外環(huán)境,將它的引擎、編譯器以及其他組件和舒適的圖形界面以更加友好的方式呈現(xiàn)。一個在Java世界里非常著名的IDE就是Eclipse(見圖4),同時也可以作為其他語言的運行環(huán)境,甚至是像R一樣的數(shù)據(jù)分析包(Data analysis packages)。

圖4所示為運行著Java的Eclipse截屏。Eclipse是一個優(yōu)秀的Java IDE(也適合其他的編程語言)。

其他可供你參考的的面向?qū)ο笳Z言包括:

C++是與Java齊名的編程語言,快速而流行

Ruby是強大的面向?qū)ο缶幊痰膫溥x語言

JavaScript是可與Java配合使用的基于網(wǎng)頁的編程語言

Python是優(yōu)秀的面向?qū)ο笳Z言,特別適合初學編程的人

C#是由微軟開發(fā)的業(yè)界知名的編程語言

所有這些都是免費而且可以通過免費教程學習的(C#的IDE是Visual Studio,它是商業(yè)軟件[1])。另外,它們都有一些共同點,如果你對面向?qū)ο缶幊?OOP)的概念很熟悉的話,例如封裝、繼承以及多態(tài),你就能夠處理它們中的任何一個。注意,所有這些編程語言都是命令型語言(相對于最近逐漸出名的聲明/函數(shù)型編程語言而言)。這個類型編程語言的語句基本上都是在命令計算機采取什么樣的行動。而聲明/函數(shù)型語言,相對來說更多的關(guān)注***的結(jié)果而對下一步采取什么動作的具體細節(jié)并不關(guān)心。

盡管在寫作本書時,面向?qū)ο缶幊陶Z言在專業(yè)編程領(lǐng)域是一個基本配置,但目前還是有一些向函數(shù)型語言變化的趨勢(例如Haskell、Clojure、ML、Scala、Erlang、OCaml、Clean等)。這些語言基于另一種哲學,關(guān)注函數(shù)式表達式的求值而不是變量的使用或者實現(xiàn)它們命令的具體執(zhí)行。

函數(shù)型語言的一個大加分項就在于它便捷的可擴展性(這對于處理大數(shù)據(jù)極有幫助)以及避免出錯,因為它們不使用全局工作空間。不過,它們相比于面向?qū)ο缶幊陶Z言,在大多數(shù)數(shù)據(jù)科學應(yīng)用下要慢一些。盡管它們中有幾個語言(例如OCaml和Clean)在做數(shù)值運算時,可以和C語言[2]一樣快。如果未來峰回路轉(zhuǎn)之后,函數(shù)型語言的情況逐漸好轉(zhuǎn),為了穩(wěn)妥起見,那么你可能會希望把函數(shù)型語言添加到你的技能樹中去。注意函數(shù)型語言和我們之前提到的一些傳統(tǒng)的面向?qū)ο缶幊陶Z言會有交叉的部分。例如,Scala就是一個函數(shù)型面向?qū)ο缶幊陶Z言,這個語言值得大家好好研究。

3. 數(shù)據(jù)分析軟件

如果數(shù)據(jù)科學家耗費時間所參與的編程工作到***得不到任何認同,或干脆就毫無意義,那數(shù)據(jù)科學家還有什么可當?shù)?于是,數(shù)據(jù)分析軟件就在此時登場了。在眾多選擇中,最有名的當屬Matlab和R。它們都很棒,但是沒有必要去計較誰比誰更好,因為用那一種工具更多是基于個人偏好。有趣的是,這兩者之間的語法和功能函數(shù)非常相近,以至于如果你精通了其中任意一種,那么學習另一種的時間也就是2~3個星期。

由于R在某種程度上來說更受歡迎,主要由于它免費開源,龐大的用戶群體定期地向其貢獻新內(nèi)容,因此,我們在本書中會更關(guān)注R。所以希望那些傾向于Matlab,并了解Matlab在哪些地方優(yōu)于R和其他數(shù)據(jù)分析工具的人,理解我們的選擇并保持開放的心態(tài)。R同樣有優(yōu)于其他數(shù)據(jù)分析工具的地方,并且它在編寫和運行程序上都很直觀,通常不使用循環(huán)結(jié)構(gòu)(一種程序結(jié)構(gòu),一般來說會拖慢高級程序語言的分析時間),而是利用運用向量的一些操作,而且它還可以延展到矩陣,這種特性被稱為向量化,向量化使得數(shù)據(jù)分析腳本易于閱讀和理解(面向?qū)ο缶幊陶Z言通常運行速度很快,因此循環(huán)對于它們并不是問題)。

R語言的運行環(huán)境十分簡單(在某種方面上與Python類似),對用戶使用來說也足夠友好,特別是一些小程序。圖5的截屏展示了這個運行環(huán)境的樣子。

圖5顯示了R語言(原版)的編程環(huán)境。正如你所看到的那樣,盡管編程環(huán)境足夠友好,但它還是缺少了許多在IDE內(nèi)的貼心功能。

R作為一款數(shù)據(jù)分析工具來說是十分強大的,而它的GUI(圖形用戶界面)也做得很好。然而,如果你真的想用這款軟件,還是需要花點時間學習并調(diào)試一下IDE。市面上有很多款R語言的IDE(大多數(shù)是免費的),但其中有一個佼佼者,叫做RStudio(見圖6)。

圖6顯示了R語言眾多IDE中的其中一員RStudio。你可以從圖中看到,除了主控窗口(左下窗口)外,還有腳本編輯窗口(左上窗口),工作空間查看窗口(右上)以及圖形查看窗口(右下)。除此之外,還有許多別的功能來輔助R語言的編寫與運行。

R語言之外的其他數(shù)據(jù)分析工具還有。

Matlab/Octave在R成名業(yè)界之前就已存在,并且Matlab就已經(jīng)稱王于數(shù)據(jù)分析領(lǐng)域。盡管Matlab是有商業(yè)所有權(quán)的軟件(需要付費使用),他還是有幾個開源的小伙伴們,其中***的當屬Octave。Matlab和Octave對于初學者而言都是很好的工具,它們有大量的應(yīng)用,并且像R那樣實現(xiàn)了向量化。但是,Matlab的工具箱(函數(shù)庫)稍有些昂貴,而Octave則沒有這些。

SPSS是現(xiàn)有***的統(tǒng)計程序之一,而且廣泛適用于研究領(lǐng)域。學習起來很簡單,它可以做任何數(shù)據(jù)分析,盡管不像R語言那樣高效。此外,和Matlab一樣,它也是有商業(yè)所有權(quán)的,為學界與業(yè)界所推崇。

SAS是一個流行的統(tǒng)計程序,特別是在企業(yè)當中。學習起來相對簡單,它也有一個不錯的腳本語言工具,可以幫助創(chuàng)建更為復雜的數(shù)據(jù)分析。但是,它也是有商業(yè)所有權(quán)的。

Stata是選擇統(tǒng)計程序包時的好選擇。Stata 是最受統(tǒng)計學家所喜歡的工具之一,也是具有商業(yè)所有權(quán)的。自從R語言在數(shù)據(jù)分析世界變得廣受歡迎以來,Stata就不再像以前那么受寵了。

注意,上面所提及的軟件(除Octava以外),都是具有商業(yè)所有權(quán)的,所以他們并不像R那樣能吸引巨量的用戶群。如果你對統(tǒng)計和編程都很熟悉,那么對你來說,它們就會很容易學習。在Matlab的幫助下,你不需要為了使用而去熟悉很多統(tǒng)計學知識。我們會在10.5節(jié)再探討R語言,那時,我們會討論如何在機器學習架構(gòu)中使用它。

4 .可視化工具

數(shù)據(jù)分析結(jié)果可視化的重要性顯而易見,這也就是增加一些可視化軟件可以充實你的軟件兵器庫的原因。盡管所有的數(shù)據(jù)分析程序都能提供一些像樣的可視化工具,但增加一些專用的工具總是好的。例如Tableau,它可以使整個處理過程都更加直觀以及高效(見圖7)。

很遺憾地說,因為Tableau是一個具有商業(yè)所有權(quán)的軟件,所以它有些貴。然而,他可以實現(xiàn)快速的數(shù)據(jù)可視化,混合以及圖像導出。它的使用界面十分友好,易于學習,在網(wǎng)上有大量的資源,空間使用相當小(小于100MB)。另外,它的開發(fā)者們也樂于通過教程與實踐來指導用戶學習。它在Windows(XP之后的任何版本)上運行,同時還有兩周的試用期。有趣的是,它是華盛頓大學“數(shù)據(jù)科學導論”的教學大綱的一部分。

圖7所示為Tableau,它是一款出色的可視化程序。正如你所見,它十分直觀而且提供了各種各樣的特性。

在業(yè)界,Tableau較其他可視化程序取得了領(lǐng)跑者的地位。盡管它更適合于商業(yè)智能應(yīng)用,但它還可以被用在任何數(shù)據(jù)可視化任務(wù)中,同時它實現(xiàn)了通過郵件和在線的圖像簡易共享。它也提供了交互式的映射以及能夠同時處理不同來源的數(shù)據(jù)。

如果你對這款軟件的同類產(chǎn)品感興趣,你可以看看以下幾款程序。

Spotfire是由TIBCO開發(fā)的優(yōu)秀產(chǎn)品,可視化分析的理想工具。它可以與地理信息系統(tǒng),建模及分析軟件良好集成,同時具有***的可擴展性,其價格與Tableau保持同一水平。

Qlikview是一款良好的備選工具,對數(shù)據(jù)可視化和深入鉆取任務(wù)是理想的工具。它速度很快并且提供了出色的交互可視化及儀表盤支持。它有很棒的用戶界面和視覺控制,而且還有在內(nèi)存中處理大數(shù)據(jù)集的出色能力。然而,它受到內(nèi)存大小的限制(具有擴展性問題),而且價格相對較高。

Prism是一款直觀的商業(yè)智能(BI)軟件,可以輕松地實施任務(wù)和學習。它主要專注于商業(yè)數(shù)據(jù),除去一般類型的圖表以外,它可以生成數(shù)據(jù)儀表盤、積分板、查詢報告等。

InZite是一款有趣的替代方案,提供了吸引人的可視化及儀表盤特性,快速而且直觀。

Birst是一個好選擇,提供了大量交互性可視化以及分析工具。它可以生成透視表,還可以用精細直觀的報表工具深入鉆取數(shù)據(jù)。

SAP Business Objects提供了指向并點擊數(shù)據(jù)可視化功能,以便能夠生成交互并可分享的可視化圖像和交互儀表盤,它直接集成了SAP的其他產(chǎn)品。

一般來說,數(shù)據(jù)可視化程序使用起來相對輕松,所以在你的“數(shù)據(jù)兵器庫”中加入它們并不是個問題。在傾注大量時間掌握其中任何一個工具之前,確保它能與你使用的其他工具集成良好。此外,看看大部分你所感興趣的軟件廣告中都包含了哪些其他的可視化軟件。

5 .集成大數(shù)據(jù)系統(tǒng)

盡管并不是必須的,但能夠熟悉至少一個集成大數(shù)據(jù)系統(tǒng)是很好的。IBM的BigInsights平臺就是其中一個很不錯的例子,盡管事實上它還處于初期版本。它的設(shè)計思路是將Hadoop的大部分功能封裝到一個對用戶友好,并且有像樣的圖形界面的軟件包中去。它的加分項是它還能執(zhí)行數(shù)據(jù)的可視化和調(diào)度,類似這種“多合一”的套件包相當貼心,這樣你就可以專注于數(shù)據(jù)科學工作的其他部分了。BigInsights運行在一個集群/服務(wù)器中,可以通過網(wǎng)頁瀏覽器來訪問。圖8所示為BigInsights平臺的界面截屏。

通過Mozilla 火狐瀏覽器訪問運行中的IBM的BigInsights平臺。如你所見,它的用戶界面十分友好。

集成大數(shù)據(jù)系統(tǒng)的一個巨大優(yōu)勢在于它圖形化的用戶界面,與優(yōu)秀的文檔結(jié)合在一起之后,使整個系統(tǒng)變得十分友好、直觀,而且可以輕松地學會操作。此外,圖形界面會很好地結(jié)合Hadoop相關(guān)操作命令,它可以讓你專注于數(shù)據(jù)科學中更高級別的方面,將你從原本不得不做的大量底層編程中解放出來。

與BigInsights類似的另一個選擇是Cloudera,它同樣馳名于業(yè)界,同時更加穩(wěn)健。其他值得你了解的軟件還包括Knime、Alpine數(shù)據(jù)實驗室套件、Pivotal套件,等等。在你讀到這里的時候,很可能已經(jīng)發(fā)布了其他一些集成大數(shù)據(jù)系統(tǒng),所以請確保你了解它們是什么,以及它們都提供了哪些功能。

6. 其他一些程序

如果不加上一些輔助工具的話,上面這個程序列表就顯得不完整。因為發(fā)布的公司不同,這些程序可能也會各不相同,但當你需要優(yōu)化你的“軟件兵工廠”的時候,它們是一個好的起步。舉個例子,Git版本控制程序絕對值得吸引你的目光,因為你很可能會需要用到它,特別是當你與其他人(通常是程序員)一起參與一個大型項目的時候。你可以從圖9中看到它的操作界面和它的一些常用命令。

Git版本控制程序不算是最直觀的可用程序,但具有豐富的功能和高效的工作能力。

注意,Git有很多在主流操作系統(tǒng)下的圖形界面的插件。有一個在Windows操作系統(tǒng)下非常好的開源圖形界面插件叫Git擴展(Git Extensions),除此以外也還有許多在其他操作系統(tǒng)下運行得很好的Git圖形界面。這個特別的圖形界面插件讓Git變得更加直觀而且保留了它的命令提示行(但并不是每個Git圖形界面都提供這個功能)。

如果在這里忽略了Oracle SQL開發(fā)軟件,就簡直是有悖神明,因為它經(jīng)常用于訪問公司Oracle數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)。盡管這個特別的軟件由于大數(shù)據(jù)技術(shù)的迅速擴張,在接下來的幾年內(nèi)可能會不勝從前,但在做數(shù)據(jù)科學任務(wù)時,它仍然十分重要。你可以從圖10中看到Oracle SQL Developer 的截屏界面。

Oracle SQL Developer數(shù)據(jù)庫軟件是處理公司數(shù)據(jù)庫和數(shù)據(jù)倉庫中結(jié)構(gòu)化數(shù)據(jù)的***搭配。

這個軟件最關(guān)鍵的部分就是SQL,所以為了使用它的全部潛力,你需要讓自己熟悉這種查詢語言。正如我們在前幾章中看到的那樣,這對數(shù)據(jù)科學家來說是一個非常有用的語言,即使你用得機會并不太多。這是因為它會以其他形式被使用到大數(shù)據(jù)的數(shù)據(jù)庫程序中。

當你從事數(shù)據(jù)科學工作時,一些其他需要熟悉的程序如下。

MS Excel是微軟Office套件中知名的電子表單應(yīng)用。與其他的數(shù)據(jù)分析程序相比,Excel以其簡單到不可思議的特性,一直沿用到今天,并且在檢視csv(逗號分隔值,一組以逗號作為分隔符的數(shù)據(jù)值)文件形式的原始數(shù)據(jù)時遲早會派上用處(例如,創(chuàng)建分析結(jié)果報告的總結(jié))。就像Office套件中的其他應(yīng)用一樣,它是具有商業(yè)所有權(quán)的,盡管還有很多具有類似功能的免費替代方案(例如,Open Office 的Calc應(yīng)用)。

MS Outlook是微軟Office套件中另一個同樣知名的程序,它被設(shè)計用來處理電子郵件、日歷、待做事宜以及聯(lián)系人信息。當然也有很多免費的備選程序,但經(jīng)常被用于工作場合。如果你每天都要處理內(nèi)部和外部通信、預約等,它會顯得非常有用。它也是具有商業(yè)所有權(quán)的軟件。

Eclipse如早先提及的那樣,這是面向?qū)ο笳Z言以及其他編程語言(甚至是R)中***人氣的IDE。它非常穩(wěn)健直觀,使得編程的過程更加友好和高效。它是開源而且跨平臺的。

Emcien能夠處理復雜數(shù)據(jù)集,特別是半結(jié)構(gòu)化數(shù)據(jù)和非數(shù)值類型時所使用的優(yōu)秀的圖像分析程序。如果你對更高級的數(shù)據(jù)分析,特別是基于圖的分析感興趣的話,這是一個不容錯過的程序。它并不是一款其他數(shù)據(jù)分析程序的替代者,不過,它是具有商業(yè)所有權(quán)的。

Filezilla(或者其他的FTP客戶端程序)能夠傳輸大型文件或者在跨Internet進行文件傳輸時提供某一級別的安全性保障,此時這個程序就顯得非常有用。它是一個開源軟件。

7. 要點

數(shù)據(jù)科學家在日常工作中會利用各類工具,本章介紹了其中***有代表性的,包括:Hadoop/Spark、面向?qū)ο缶幊陶Z言(例如Java)、數(shù)據(jù)分析平臺(例如R)、可視化軟件以及一些輔助工具(例如GIT和Oracle)。此外還有一些公司和行業(yè)所需求的特定程序。

Hadoop是大數(shù)據(jù)軟件界的凱迪拉克,它的套件由幾類組件組成,包括文件系統(tǒng)(HDFS)、將數(shù)據(jù)分布到計算機集群的方法(MapReduce)、機器學習程序(Mahout)、編程語言(Pig)、數(shù)據(jù)庫程序(Hive、HBase等)、調(diào)度器(Oozie)、元數(shù)據(jù)和數(shù)據(jù)表管理框架(HCatalog)以及調(diào)試管理器和協(xié)同程序(Zookeeper)等。

Hadoop套件有很替代方案,例如Storm、Spark、BashReduce、Disco project,等等。

有幾款可以并行幫助Hadoop開展工作的程序:Drill、Julia、D3.js、以及Impala等。

作為數(shù)據(jù)科學家,你應(yīng)該能處理至少一個面向?qū)ο笳Z言,例如Java、C++、Ruby、Python、C#等。面向?qū)ο笳Z言目前是分布最廣的編程語言范式,盡管最近有一股面向函數(shù)型語言的風潮涌動。

函數(shù)型編程語言(例如Clojure、OCaml、Clean、ML、Scala和Haskell)都是很優(yōu)秀的資產(chǎn),特別是如果你擅長編程而且想要擴展你的編程技能。

你必須對至少一種現(xiàn)下流行的分析工具極為熟悉,R、Matlab/Octave、SPS、SAS、Stata。其中只有R與Octave是開源的,而前者(R)是時下最為流行的選擇。

Tableau則是數(shù)據(jù)可視化軟件中的***的選項,盡管還有類似于Spotfire、Qlikview、Brist、inZite、Prism和SAP Business Objects的工具。

集成大數(shù)據(jù)系統(tǒng)(例如IBM的BigInsights平臺)同樣值得去研究,因為它們使整體的數(shù)據(jù)科學流程更高效,同時將你從MapReduce所需的低層編程中解放出來。

其他一些程序值得你花時間去了解,GIT(或者其他的版本控制工具)、Oracle、MS Excel、MS Outloo、Eclipse、Emcien以及Filezilla(或者其他的FTP客戶端程序)。很自然地,你會的程序越多(即使沒有在本章中列舉),也就越牛,只要你對它們掌握得足夠好,它們也會在商業(yè)應(yīng)用中展現(xiàn)出更大的價值。

責任編輯:趙寧寧 來源: 大數(shù)據(jù)工具
相關(guān)推薦

2019-03-25 21:18:41

數(shù)據(jù)科學家大數(shù)據(jù)技能

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學家

2019-11-29 18:03:27

數(shù)學R語言算法

2019-09-11 14:34:13

排序算法數(shù)據(jù)科學

2018-12-24 08:37:44

數(shù)據(jù)科學家數(shù)據(jù)模型

2012-12-06 15:36:55

CIO

2018-03-27 11:02:55

2012-12-26 10:51:20

數(shù)據(jù)科學家

2018-10-16 14:37:34

數(shù)據(jù)科學家數(shù)據(jù)分析數(shù)據(jù)科學

2012-06-12 09:33:59

2024-03-08 12:09:26

數(shù)據(jù)可視化圖表

2017-04-12 09:34:30

數(shù)據(jù)科學家統(tǒng)計學家好習慣

2015-08-26 13:11:54

數(shù)據(jù)Python

2018-02-28 15:03:03

數(shù)據(jù)科學家數(shù)據(jù)分析職業(yè)

2018-04-19 06:09:11

命令行工具操作系統(tǒng)Linux

2020-03-20 14:40:48

數(shù)據(jù)科學Python學習

2020-04-09 15:32:20

數(shù)據(jù)科學AutoML代智能

2016-04-11 14:15:06

數(shù)據(jù)科學數(shù)據(jù)挖掘工具

2022-04-25 09:48:31

數(shù)據(jù)科學崗位離職

2015-08-25 13:20:29

數(shù)據(jù)科學
點贊
收藏

51CTO技術(shù)棧公眾號