書名: 大數(shù)據(jù)基礎(chǔ)與應(yīng)用作者名: 趙國(guó)生 王健 宋一兵主編本章字?jǐn)?shù): 2919字更新時(shí)間: 2021-12-15 16:00:22
1.5 大數(shù)據(jù)相關(guān)工具
繼云計(jì)算技術(shù)之后大數(shù)據(jù)時(shí)代快速來(lái)臨,大數(shù)據(jù)充滿世界的每個(gè)角落,發(fā)展勢(shì)頭蓋過任何一門技術(shù)。以Hadoop大數(shù)據(jù)平臺(tái)、Python和R語(yǔ)言等為首的相關(guān)工具掀起一場(chǎng)狂潮。
1.5.1 Hadoop
Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序,充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的硬件上;而且它提供高吞吐量來(lái)訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了POSIX的要求,可以以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),MapReduce則為海量的數(shù)據(jù)提供了計(jì)算框架。圖1-7為Hadoop圖標(biāo)。

圖1-7 Hadoop圖標(biāo)
Hadoop在大數(shù)據(jù)處理中的廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取、變形和加載(ETL)方面上的天然優(yōu)勢(shì)。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能地靠近存儲(chǔ),對(duì)例如像ETL這樣的批處理操作相對(duì)合適,因?yàn)轭愃七@樣操作的批處理結(jié)果可以直接走向存儲(chǔ)。Hadoop的MapReduce功能實(shí)現(xiàn)了將單個(gè)任務(wù)打碎,并將碎片任務(wù)(Map)發(fā)送到多個(gè)節(jié)點(diǎn)上,之后再以單個(gè)數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉(cāng)庫(kù)里。
Hadoop由許多元素構(gòu)成。其最底部是HDFS,它存儲(chǔ)Hadoop集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS的上一層是MapReduce引擎,該引擎由JobTrackers和TaskTrackers組成。Hadoop分布式計(jì)算平臺(tái)的核心技術(shù)包括分布式文件系統(tǒng)HDFS、MapReduce處理過程,以及數(shù)據(jù)倉(cāng)庫(kù)工具Hive和分布式數(shù)據(jù)庫(kù)Hbase。
【例1-2】在Hadoop編輯器中輸入下列代碼。

執(zhí)行程序后可得到下列結(jié)果:

1.5.2 R語(yǔ)言
R語(yǔ)言誕生于1980年左右,是統(tǒng)計(jì)領(lǐng)域廣泛使用的S語(yǔ)言的一個(gè)分支。可以認(rèn)為,R語(yǔ)言是S語(yǔ)言的一種實(shí)現(xiàn)。而S語(yǔ)言是由AT&T貝爾實(shí)驗(yàn)室開發(fā)的一種用來(lái)進(jìn)行數(shù)據(jù)探索、統(tǒng)計(jì)分析和作圖的解釋型語(yǔ)言。最初S語(yǔ)言的實(shí)現(xiàn)版本主要是S-Plus。S-Plus是一個(gè)商業(yè)軟件,它基于S語(yǔ)言,并由MathSoft公司的統(tǒng)計(jì)科學(xué)部進(jìn)一步完善。后來(lái)新西蘭奧克蘭大學(xué)的RobertGentleman和Ross Ihaka及其他志愿人員開發(fā)了一個(gè)R系統(tǒng),由“R開發(fā)核心團(tuán)隊(duì)”負(fù)責(zé)開發(fā)。R可以看作貝爾實(shí)驗(yàn)室(AT&T BellLaboratories)的RickBecker,JohnChambers和AllanWilks開發(fā)的S語(yǔ)言的一種實(shí)現(xiàn)。當(dāng)然,S語(yǔ)言也是S-Plus的基礎(chǔ)。所以,兩者在程序語(yǔ)法上可以說幾乎是一樣的,可能只是在函數(shù)方面有細(xì)微差別,程序十分容易地就能被移植到程序中,而很多的程序只要稍加修改也能運(yùn)用于R。圖1-8為R語(yǔ)言圖標(biāo)。

圖1-8 R語(yǔ)言圖標(biāo)
R是一套由數(shù)據(jù)操作、計(jì)算和圖形展示功能整合而成的套件,包括有效的數(shù)據(jù)存儲(chǔ)和處理功能,一套完整的數(shù)組計(jì)算操作符;完整體系的數(shù)據(jù)分析工具,為數(shù)據(jù)分析和顯示提供的強(qiáng)大圖形功能;一套完善、簡(jiǎn)單、有效的編程語(yǔ)言(包括條件、循環(huán)、自定義函數(shù)、輸入輸出功能)。在這里使用“環(huán)境”是為了說明R的定位是一個(gè)完善、統(tǒng)一的系統(tǒng),而非其他數(shù)據(jù)分析軟件那樣作為一個(gè)專門、不靈活的附屬工具。
與其說R是一種統(tǒng)計(jì)軟件,還不如說R是一種數(shù)學(xué)計(jì)算的環(huán)境,因?yàn)镽并不是僅僅提供若干統(tǒng)計(jì)程序、使用者只需指定數(shù)據(jù)庫(kù)和若干參數(shù)便可進(jìn)行統(tǒng)計(jì)分析。R的思想是:它可以提供一些集成的統(tǒng)計(jì)工具,但更大量的是它提供各種數(shù)學(xué)計(jì)算、統(tǒng)計(jì)計(jì)算的函數(shù),從而使使用者能靈活機(jī)動(dòng)地進(jìn)行數(shù)據(jù)分析,甚至創(chuàng)造出符合需要的新的統(tǒng)計(jì)計(jì)算方法。
該語(yǔ)言的語(yǔ)法表面上類似C,但在語(yǔ)義上是函數(shù)設(shè)計(jì)語(yǔ)言(Functional Programming Language)的變種,并且和Lisp以及APL有很強(qiáng)的兼容性。特別的是,它允許在“語(yǔ)言上計(jì)算”。這使得它可以把表達(dá)式作為函數(shù)的輸入?yún)?shù),而這種做法對(duì)統(tǒng)計(jì)模擬和繪圖非常有用。
R是一個(gè)免費(fèi)的自由軟件,它有UNIX、Linux、MacOS和Windows版本,都是可以免費(fèi)下載和使用的。在https://jingyan.baidu.com/article/647f0115d11aab7f20489875.html可以下載到R的安裝程序。在R的安裝程序中只包含了8個(gè)基礎(chǔ)模塊,其他外在模塊可以通過CRAN獲得。
R的功能能夠通過由用戶撰寫的套件增強(qiáng)。增加的功能有特殊的統(tǒng)計(jì)技術(shù)、繪圖功能,以及編程界面和數(shù)據(jù)輸出/輸入功能。這些軟件包是由R語(yǔ)言、LaTeX、Java及C語(yǔ)言和Fortran撰寫。下載的執(zhí)行檔版本會(huì)附加一批核心功能的軟件包,而根據(jù)CRAN紀(jì)錄有過千種不同的軟件包。其中有幾款較為常用,如用于經(jīng)濟(jì)計(jì)量、財(cái)經(jīng)分析、人文科學(xué)研究以及人工智能。
【例1-3】在R語(yǔ)言編輯器中的提示符后輸入下列代碼,然后按下回車即可看到結(jié)果。

或輸入下列指令,可得到結(jié)果:

1.5.3 Python語(yǔ)言
Python是一種廣泛使用的高級(jí)編程語(yǔ)言,屬于通用型編程語(yǔ)言,由吉多·范羅蘇姆創(chuàng)造,第一版發(fā)布于1991年,可以視之為一種改良(加入一些其他編程語(yǔ)言的優(yōu)點(diǎn),如面向?qū)ο螅┑腖ISP(表處理語(yǔ)言)。作為一種解釋型語(yǔ)言,Python的設(shè)計(jì)哲學(xué)強(qiáng)調(diào)代碼的可讀性和簡(jiǎn)潔的語(yǔ)法(尤其是使用空格縮進(jìn)劃分代碼塊,而非使用大括號(hào)或者關(guān)鍵詞)。相比于C++或Java,Python讓開發(fā)者能夠用更少的代碼表達(dá)想法。不管是小型還是大型程序,該語(yǔ)言都試圖讓程序的結(jié)構(gòu)清晰明了。與Scheme、Ruby、Perl、Tcl等動(dòng)態(tài)類型編程語(yǔ)言一樣,Python擁有動(dòng)態(tài)類型系統(tǒng)和垃圾回收功能,能夠自動(dòng)管理內(nèi)存使用,并且支持多種編程范式,包括面向?qū)ο蟆⒚钍健⒑瘮?shù)式和過程式編程。其本身?yè)碛幸粋€(gè)巨大而廣泛的標(biāo)準(zhǔn)庫(kù)。圖1-9為Python圖標(biāo)。

圖1-9 Python圖標(biāo)
Python解釋器本身幾乎可以在所有的操作系統(tǒng)中運(yùn)行。Python的正式解釋器CPython是用C語(yǔ)言編寫的、由社群驅(qū)動(dòng)的自由軟件,目前由Python軟件基金會(huì)管理。
Python是完全面向?qū)ο蟮恼Z(yǔ)言(函數(shù)、模塊、數(shù)字、字符串都是對(duì)象),并且完全支持繼承、重載、派生、多重繼承,有益于增強(qiáng)源代碼的復(fù)用性。Python支持重載運(yùn)算符,因此Python也支持泛型設(shè)計(jì)。相對(duì)于LISP這種傳統(tǒng)的函數(shù)式編程語(yǔ)言,Python對(duì)函數(shù)式設(shè)計(jì)只提供了有限的支持。有兩個(gè)標(biāo)準(zhǔn)庫(kù)提供了與Haskell和Standard ML中類似的函數(shù)式程序設(shè)計(jì)工具。雖然Python可能被粗略地分類為“腳本語(yǔ)言”,但實(shí)際上一些大規(guī)模軟件開發(fā)項(xiàng)目(如Zope、Mnet、BitTorrent、Google)也廣泛地使用它。
Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語(yǔ)言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C、C++、Cython來(lái)編寫擴(kuò)充模塊。Python編譯器本身也可以被集成到其他需要腳本語(yǔ)言的程序內(nèi)。Python的設(shè)計(jì)哲學(xué)是優(yōu)雅、明確、簡(jiǎn)單。Python開發(fā)者的哲學(xué)是“用一種方法,最好是只有一種方法來(lái)做一件事”,也因此它和擁有明顯個(gè)人風(fēng)格的其他語(yǔ)言很不一樣。在設(shè)計(jì)Python語(yǔ)言時(shí),如果面臨多種選擇,Python開發(fā)者一般會(huì)拒絕華而不實(shí)的語(yǔ)法,而選擇明確沒有或者很少有歧義的語(yǔ)法。這些準(zhǔn)則被稱為“Python格言”。在Python解釋器內(nèi)運(yùn)行“import this”可以獲得完整的列表。
【例1-4】在Python編輯器內(nèi)輸入以下代碼并得到結(jié)果。

1.5.4 RapidMiner
RapidMiner是世界領(lǐng)先的數(shù)據(jù)挖掘解決方案,RapidMiner具有豐富的數(shù)據(jù)挖掘分析和算法功能,常用于解決各種商業(yè)關(guān)鍵問題,如營(yíng)銷響應(yīng)率、客戶細(xì)分、客戶忠誠(chéng)度及終身價(jià)值、資產(chǎn)維護(hù)、資源規(guī)劃、預(yù)測(cè)性維修、質(zhì)量管理、社交媒體監(jiān)測(cè)和情感分析等典型商業(yè)案例。其解決方案覆蓋了各個(gè)領(lǐng)域,包括汽車、銀行、保險(xiǎn)、生命科學(xué)、制造業(yè)、石油和天然氣、零售業(yè)及快消行業(yè)、通信業(yè)、公用事業(yè)等各個(gè)行業(yè)。圖1-10為RapidMiner圖標(biāo)。

圖1-10 RapidMiner圖標(biāo)
1.5.5 Tableau
Tableau致力于幫助人們查看并理解數(shù)據(jù)。Tableau幫助用戶快速分析、可視化并分享信息。超過42,000家客戶通過使用Tableau在辦公室或隨時(shí)隨地快速獲得結(jié)果。數(shù)以萬(wàn)計(jì)的用戶使用Tableau Public在博客與網(wǎng)站中分享數(shù)據(jù)。Tableau公司將數(shù)據(jù)運(yùn)算與美觀的圖表完美地嫁接在一起。它的程序很容易上手,各公司可以用它將大量數(shù)據(jù)拖放到數(shù)字“畫布”上,轉(zhuǎn)眼間就能創(chuàng)建好各種圖表。這一軟件的理念是,界面上的數(shù)據(jù)越容易操控,公司對(duì)自己所在業(yè)務(wù)領(lǐng)域里的所作所為到底是正確還是錯(cuò)誤就能了解得越透徹。圖1-11為Tableau圖標(biāo)。

圖1-11 Tableau圖標(biāo)
- 智能倉(cāng)儲(chǔ)環(huán)境監(jiān)控
- 2013海南省園林綠化與仿古建設(shè)工程綜合定額(下冊(cè))
- Web滲透測(cè)試與防護(hù)(慕課版)
- 蘇州大學(xué)外國(guó)語(yǔ)學(xué)院211翻譯碩士英語(yǔ)[專業(yè)碩士]歷年考研真題及詳解
- 大學(xué)生素質(zhì)教育教程
- 2019年新托福核心詞匯全突破【附高清視頻講解】(上)
- 國(guó)際貿(mào)易理論與實(shí)務(wù)
- 2020年西藏公務(wù)員錄用考試專項(xiàng)教材:判斷推理【考點(diǎn)精講+典型題(含歷年真題)詳解】
- 國(guó)際貿(mào)易實(shí)務(wù)
- 2020年全國(guó)法律碩士《398法碩聯(lián)考專業(yè)基礎(chǔ)(非法學(xué))》歷年考研真題與模擬試題詳解【24小時(shí)高清視頻】
- 會(huì)計(jì)學(xué)(第二版)
- 編譯原理課程設(shè)計(jì)
- 電子設(shè)備故障診斷與排除(原書第4版)
- 環(huán)境保護(hù)概論(第二版)
- 近代物理測(cè)試技術(shù)