版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述
1.1認(rèn)識大數(shù)據(jù)
1.1.1大數(shù)據(jù)的定義
大數(shù)據(jù)(bigdata)這個詞,在如今對人們來說都不陌生,大數(shù)據(jù)甚至現(xiàn)在與我們的
生活息息相關(guān)?!按髷?shù)據(jù)”和“人工智能”儼然已經(jīng)成為科技行業(yè)最具價值的領(lǐng)域,
無論是蘋果、谷歌還是阿里、騰訊,所有的科技公司都在這兩個領(lǐng)域投入了大量的心
血。那么什么是大數(shù)據(jù)呢?大數(shù)據(jù)到底有什么特征呢?
最早,麥肯錫公司(McKinseyCompany)給出的定義是:數(shù)據(jù),已經(jīng)滲透到當(dāng)今每
一個行業(yè)和業(yè)務(wù)職能領(lǐng)域,成為重要的生產(chǎn)要素。人們對于海量數(shù)據(jù)的挖掘和運用,
預(yù)示著新一波生產(chǎn)率增長和消費者盈余浪潮的到來。
大數(shù)據(jù),是指無法在一定時間范圍內(nèi)用常規(guī)軟件工具進行捕捉、管理和處理的數(shù)
據(jù)集合,是需要新處理模式才能具有更強的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的具
有海量、高增長率和多樣化等特點的信息資產(chǎn)。簡而言之,大數(shù)據(jù)就是數(shù)據(jù)量非常大、
數(shù)據(jù)種類繁多、無法用常規(guī)歸類方法應(yīng)用計算的數(shù)據(jù)集成。
大數(shù)據(jù)的本質(zhì)意義就是對數(shù)據(jù)進行專業(yè)化的處理而不在于數(shù)據(jù)信息的龐大。我們
可以把大數(shù)據(jù)比作工廠,而生產(chǎn)效率是其中的關(guān)鍵,關(guān)鍵是提高對數(shù)據(jù)這個原材料的
“加工能力”,同時,通過“深加工”實現(xiàn)數(shù)據(jù)的持續(xù)“增值”。
在當(dāng)下的大數(shù)據(jù)時代,信息傳輸非常迅捷。據(jù)麥肯錫全球研究院(McKinseyGlobal
Institute)估計,每一秒鐘就有543TB的數(shù)據(jù)流過國界,其總數(shù)據(jù)量相當(dāng)于1300萬份莎
士比亞全集。
數(shù)據(jù)的快速流動對國家的國內(nèi)(或地區(qū))生產(chǎn)總值(GDP)會帶來翻天覆地的變化,各
種科技成果也是與日俱增。更比傳統(tǒng)的物流運輸有著絕對的優(yōu)勢??梢赃@么說,數(shù)據(jù)
是全球資本的生命線。
換句話說,跨國界的信息交流比運輸糧食和生活用品有更高的經(jīng)濟價值。畢竟,
數(shù)據(jù)就是金錢。一直以來,大數(shù)據(jù)與商業(yè)就密不可分。因為利用數(shù)據(jù)能預(yù)測公眾喜好,
自然誰都想來分一杯羹。
在這看來大數(shù)據(jù)給人們帶來的絕對是一場巨變。但是,美國的科技公司和金融行
業(yè)的巨鱷們已經(jīng)把這個概念理解得很透徹了,而大多數(shù)人還是需要花時間去消化理解
這一點的。這就是為什么科技和金融的行業(yè)巨鱷們正在努力爭取國際上的認(rèn)可,他們
想方設(shè)法掌握這些重要的大數(shù)據(jù)資源。
大數(shù)據(jù)的分析與應(yīng)用目前已經(jīng)滲透到方方面面。例如我們喜歡看什么樣的新聞,
或者我們騎共享單車常去哪里,等等,都可以通過大數(shù)據(jù)分析得出結(jié)論。在共享單車
GPS(全球定位系統(tǒng))定位和物聯(lián)網(wǎng)精細(xì)化管理下,每一個騎行單車的用戶的騎行次數(shù)、
軌跡、時長、高頻騎行時間等,都變成了大數(shù)據(jù)沉淀在共享單車智能出行共享平臺,
然后通過云計算等匯總、篩選、分析出更具價值的信息,了解哪些區(qū)域的人們最需要共
享單車,哪些區(qū)域則相反;哪個時段人們的出行更多;人們有哪些潛在的產(chǎn)品需求等。
此外,有的互聯(lián)網(wǎng)公司利用搜索關(guān)鍵詞預(yù)測禽流感的散布,統(tǒng)計學(xué)家內(nèi)特?西爾
弗(NateSilver)曾利用大數(shù)據(jù)預(yù)測2012年美國選舉結(jié)果,麻省理工學(xué)院利用手機定位數(shù)
據(jù)和交通數(shù)據(jù)建立城市規(guī)劃等。以上這些都是大數(shù)據(jù)的強大應(yīng)用。
1.1.2大數(shù)據(jù)的特征
大數(shù)據(jù)具有以下特征。
1.數(shù)據(jù)體量極為巨大
如果單從存儲量方面來考量的話,從最小的數(shù)據(jù)存儲單位bit(指一個二進制位)開
始,按順序往上是Byte(字節(jié))、KB(千字節(jié))、MB(兆字節(jié))、GB(吉字節(jié)或十億字節(jié))、
TB(太字節(jié)或萬億字節(jié))、PB(拍字節(jié)或千萬億字節(jié))、EB(艾字節(jié)或百億億字節(jié))……那
么截至目前,人類生產(chǎn)的所有印刷材料的數(shù)據(jù)量可達數(shù)百PB,而歷史上有記載開始人
類說過的所有話的數(shù)據(jù)量大約要以EB來衡量。截至目前,人類生產(chǎn)的所有印刷材料
的數(shù)據(jù)量是200PB,而歷史上全人類說過的所有話的數(shù)據(jù)量大約是5EB(lEB-2'°PB)o
2.數(shù)據(jù)類型繁多
相對于以往便于存儲的以文本為主的結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)越來越多,包括
網(wǎng)絡(luò)日志、音頻、視頻、圖片、地理位置信息等,這些多類型的數(shù)據(jù)對數(shù)據(jù)的處理能
力提出了更高的要求。
3.價值密度低
價值密度的高低與數(shù)據(jù)總量的大小成反比。數(shù)據(jù)總量越大,無效冗余的數(shù)據(jù)則
越多。
4.處理速度快
處理速度快是大數(shù)據(jù)區(qū)分于傳統(tǒng)數(shù)據(jù)挖掘的最顯著特征。根據(jù)IDC(互聯(lián)網(wǎng)數(shù)據(jù)中
心)“數(shù)字宇宙”的報告,預(yù)計在2020年,全球數(shù)據(jù)使用量將達到35.2ZB(1ZB=1O24EB)?
大數(shù)據(jù)大致可分為三類:
(1)傳統(tǒng)企業(yè)數(shù)據(jù)。包括CRMsystems(客戶關(guān)系管理系統(tǒng))的消費者數(shù)據(jù)、傳統(tǒng)的
ERP(企業(yè)資源計劃)數(shù)據(jù)、庫存數(shù)據(jù)以及賬目數(shù)據(jù)等。
(2)機器和傳感器數(shù)據(jù)。包括呼叫記錄、智能儀表數(shù)據(jù)、工業(yè)設(shè)備傳感器數(shù)據(jù)、
設(shè)備日志、交易數(shù)據(jù)等。
(3)社交數(shù)據(jù)。包括用戶行為記錄、反饋數(shù)據(jù)等。如人們在Twitter(推特)、Facebook
(臉書)這樣的社交媒體平臺留下的數(shù)據(jù)。
【案例】目前,有超過八千多個電視頻道在不停地播放最新的運動賽事,對體育
愛好者來說,追蹤起來是一件很困難的事情。
而現(xiàn)在市面上開發(fā)了一個可追蹤所有運動賽事的應(yīng)用程序RUWT,它已經(jīng)可以在
iOS(蘋果系統(tǒng))和Android(安卓系統(tǒng))設(shè)備,以及在Web瀏覽器上使用,它不斷地分析
運動數(shù)據(jù)流來讓球迷知道他們應(yīng)該轉(zhuǎn)換成哪個臺看到想看的節(jié)目,在電視的哪個頻道
上找到,并讓他們在比賽中進行投票。對于TiVo用戶等來說,實際上RUWT就是讓
他們改變頻道調(diào)到一個比賽中。
該程序能基于賽事的緊張激烈程度對比賽進行評分排名,用戶可通過該應(yīng)用程序
找到值得收看的頻道和賽事。
1.1.3未來十年大數(shù)據(jù)分析的發(fā)展趨勢
未來十年將推動大數(shù)據(jù)分析行業(yè)發(fā)展的主要趨勢有以下一些方面。
(1)公有云供應(yīng)商正擴大其影響力。
大數(shù)據(jù)行業(yè)正圍繞三大主要公有云供應(yīng)商,即亞馬遜公司旗下云計算服務(wù)平臺
AWS、微軟的云計算服務(wù)平臺Azure和谷歌云平臺,大部分軟件供應(yīng)商正在構(gòu)建可以
在這些平臺運行的解決方案。除此之外,數(shù)據(jù)庫供應(yīng)商正在提供托管的laaS(基礎(chǔ)架構(gòu)
即服務(wù))和PaaS(平臺即服務(wù))數(shù)據(jù)湖,鼓勵客戶和合作伙伴開發(fā)新的應(yīng)用程序,并將其
遷移到其中的舊應(yīng)用程序中。因此,純數(shù)據(jù)平臺、NoSQL供應(yīng)商在多元化的公有云供
應(yīng)商占優(yōu)勢的大型數(shù)據(jù)領(lǐng)域逐漸被陷入邊緣化。
(2)公有云優(yōu)于私有云的優(yōu)勢繼續(xù)擴大。
公有云正逐步成為客戶群的大數(shù)據(jù)分析平臺。這是因為公有云解決方案比內(nèi)部部
署堆棧更為成熟,增加了更豐富的功能,且成本日益增加。另外,公有云正在增加其
應(yīng)用程度編程接口生態(tài)系統(tǒng),并加快開發(fā)管理工具的速度。
(3)加速融合以讓企業(yè)實現(xiàn)商業(yè)價值。
用戶開始加快將孤立的大數(shù)據(jù)資產(chǎn)融合到公有云的速度,而公有云廠商也在優(yōu)化
困擾私有大數(shù)據(jù)架構(gòu)的跨業(yè)務(wù)孤島。同樣重要的是,云數(shù)據(jù)和本地數(shù)據(jù)解決方案正融
合到集成產(chǎn)品中,旨在降低復(fù)雜性并加快實現(xiàn)業(yè)務(wù)價值。更多的解決方案提供商正在
提供標(biāo)準(zhǔn)化的應(yīng)用程序編程接口(API),以簡化訪問,加速開發(fā),并在整個大數(shù)據(jù)解決
方案堆棧中實現(xiàn)更全面的管理。
(4)大數(shù)據(jù)初創(chuàng)公司將越來越復(fù)雜的人工智能(AI)注意應(yīng)用程序推向市場。
過去幾年來,許多新的數(shù)據(jù)庫、流處理和數(shù)據(jù)初創(chuàng)公司加入到市場中。不少公司
也開始通過AI的解決方案加入到市場競爭中。其中大部分創(chuàng)新方案都是為公有云或混
合云部署而設(shè)計的。
(5)新興解決方案逐漸替代傳統(tǒng)方法。
更多的大數(shù)據(jù)平臺供應(yīng)商將涌現(xiàn)出融合物聯(lián)網(wǎng)、區(qū)塊鏈和流計算的下一代方法。
這些大數(shù)據(jù)平臺主要針對機器學(xué)習(xí)、深度學(xué)習(xí)和人工智能管理端到端的DevOps(一組
過程方法與系統(tǒng)的統(tǒng)稱)管理進行優(yōu)化。此外,不少大數(shù)據(jù)分析平臺正在為AI微服務(wù)
架構(gòu)設(shè)計邊緣設(shè)備。
(6)Hadoop的穩(wěn)定地位。
如今更多的跡象表明,市場將Hadoop視為傳統(tǒng)大數(shù)據(jù)技術(shù),而不是顛覆性業(yè)務(wù)應(yīng)
用程序的戰(zhàn)略平臺。不過,Hadoop作為一種成熟技術(shù),被廣泛用于用戶的IT組織的
關(guān)鍵用例,并且在許多組織中仍然有很長的使用壽命??紤]到這一前景,供應(yīng)商通過
在獨立開發(fā)的硬件和軟件組件之間實現(xiàn)更平滑的互操作性,不斷提高產(chǎn)品性能。
(7)打包的大數(shù)據(jù)分析應(yīng)用程序正變得越來越廣泛。
未來十年,更多服務(wù)將自動調(diào)整其嵌入式機器學(xué)習(xí)、深度學(xué)習(xí)和AI模型,以持續(xù)
提供較佳的業(yè)務(wù)成果。這些服務(wù)將納入預(yù)先訓(xùn)練的模式,客戶可以調(diào)整和擴展到自己
的特定需求。
1.2常用大數(shù)據(jù)處理、分析工具介紹
接下來介紹一些大數(shù)據(jù)的存儲工具、開發(fā)以及挖掘工具,以便更好地展現(xiàn)在人們
的面前給大家?guī)淼谋憷?/p>
1.2.1大數(shù)據(jù)的存儲工具
1.日立公司的產(chǎn)品
日立在提供了一些大數(shù)據(jù)產(chǎn)品以外,更與Pentaho軟件公司合作開發(fā)了大數(shù)據(jù)分析
工具、日立超級橫向擴展平臺(HSP)、HSP技術(shù)架構(gòu)以及日立視頻管理平臺(VMP)。后
一個例子專門針對大視頻這個方興未艾的大數(shù)據(jù)子集,面向視頻監(jiān)控及其他視頻密集
型存儲應(yīng)用領(lǐng)域。
2.DDN的產(chǎn)品
DataDirectNetworks(DDN)有一批面向大數(shù)據(jù)存儲的解決方案。比如說,其高性能
SFA7700X文件存儲可以自動分層到WOS(WebObjectScaler,基于對象的云存儲裝置),
支持快速收集、同時分析和經(jīng)濟高效地保留大數(shù)據(jù)。
3.SpectraBlackPearl
SpectraLogic公司的BlackPearl深度存儲網(wǎng)關(guān)為基于SAS(串行連接SCSI)的磁盤、
SMR(瓦楞式堆疊磁盤)降速磁盤或磁帶提供了對象存儲接口,所有這些技術(shù)都可以放
在存儲環(huán)境中BlackPearl的后面。
4.KaminarioK2
Kaminario公司提供了另一種大數(shù)據(jù)存儲平臺,其全閃存陣列正在許多大數(shù)據(jù)應(yīng)用
領(lǐng)域找到一席之地。
5.Caringo公司的產(chǎn)品
Caringo公司旨在發(fā)掘數(shù)據(jù)的價值,解決在其中產(chǎn)生的一系列問題,并大規(guī)模保護、
管理、組織和搜索數(shù)據(jù)。有了旗艦產(chǎn)品Swarm,用戶無須將數(shù)據(jù)遷移到不同的解決方
案,即可實現(xiàn)長期保存、交付和分析,因而降低總體擁有成本。
6.Infogix
Infogix企業(yè)數(shù)據(jù)分析平臺基于五項核心功能:數(shù)據(jù)質(zhì)量、事務(wù)監(jiān)控、均衡及協(xié)調(diào)、
身份匹配、行為分析以及預(yù)測模型。這些功能據(jù)說可幫助公司提高運營效率、帶來新
的收入、確保合規(guī),并獲得競爭優(yōu)勢。該平臺可以實時檢測出現(xiàn)的數(shù)據(jù)錯誤,并自動
實行全面分析,以優(yōu)化大數(shù)據(jù)項目的表現(xiàn)。
7.Avere混合云
Avere提供了另一種大數(shù)據(jù)存儲方案,其Avere混合云部署在混合云基礎(chǔ)設(shè)施中的
各種用例。物理FXT集群用于NAS(網(wǎng)絡(luò)附加存儲)優(yōu)化這種用例,充分利用基于磁盤
的現(xiàn)有NAS系統(tǒng)前面的全閃存高性能層。FXT集群使用緩存,以便自動加快活躍數(shù)據(jù),
使用集群擴展性能(添加更多的處理器和內(nèi)存)及容量(添加更多的固態(tài)硬盤),并將部署
在廣域網(wǎng)上的核心存儲延遲隱藏起來。用戶發(fā)覺它是可以加速渲染、基因組分析、金
融模擬、軟件工具和二進制代碼庫等性能的好方法。
8.DriveScale
大數(shù)據(jù)通常需要存儲在本地磁盤上,這意味著為了在大數(shù)據(jù)集群的規(guī)模不斷擴大
時,能實現(xiàn)效率和擴展性,就需要保持計算和存儲之間的邏輯關(guān)系。于是出現(xiàn)了一個
問題:如何將磁盤從服務(wù)器分離開來,又繼續(xù)在處理器/內(nèi)存組合和驅(qū)動器之間提供同
樣的邏輯關(guān)系?如何實現(xiàn)共享存儲池的成本、規(guī)模和可管理性等方面的效率,同時仍
提供局部性的好處?DriveScale通過利用Hadoop數(shù)據(jù)存儲,就可以完美地做到這一點。
9.Hedvig
Hedvig分布式存儲平臺提供了一個統(tǒng)一性的解決方案,就是在綜合降低成本的同
時存儲的性能得到大幅的提升,以支持任何應(yīng)用程序、虛擬機管理程序、容器或云.
它可以針對數(shù)據(jù)塊、文件和對象存儲,為任何規(guī)模的任何計算提供存儲,具有可編程
性,而且支持任何操作系統(tǒng)、虛擬機管理程序或容器。此外,混合多站點復(fù)制使用獨
特的災(zāi)難恢復(fù)策略來保護每個應(yīng)用程序,并通過跨多個數(shù)據(jù)中心或云的存儲集群提供
高可用性。最后,高級數(shù)據(jù)服務(wù)讓用戶可以借助可按照卷來選擇的一系列企業(yè)服務(wù),
定制存儲。
10.Nimble
Nimble存儲預(yù)測閃存平臺據(jù)說可顯著提高分析應(yīng)用和大數(shù)據(jù)工作負(fù)載的性能。它
通過結(jié)合閃存性能和預(yù)測分析,防止IT復(fù)雜性導(dǎo)致的數(shù)據(jù)速度面臨障礙。
1.2.2大數(shù)據(jù)的軟件開發(fā)工具
在使用大數(shù)據(jù)的同時,規(guī)模也是日益劇增,會給企業(yè)對大數(shù)據(jù)的管理和分析帶來
挑戰(zhàn),下面是一些大數(shù)據(jù)開發(fā)過程中常用的工具。
1.ApacheHive
Hive是一個建立在Hadoop上的開源數(shù)據(jù)倉庫基礎(chǔ)設(shè)施,通過Hive可以很容易地
進行數(shù)據(jù)的ETL(抽取、轉(zhuǎn)換、加載),對數(shù)據(jù)進行結(jié)構(gòu)化處理,并對Hadoop上大數(shù)據(jù)
文件進行查詢和處理等。Hive提供了一種簡單的類似SQL的查詢語言——HiveQL,
這為熟悉SQL的用戶查詢數(shù)據(jù)提供了方便。
2.JaspersoftBl套件
Jaspersoft包是一個通過數(shù)據(jù)庫列生成報表的開源軟件。行業(yè)領(lǐng)導(dǎo)者發(fā)現(xiàn)Jaspersoft
軟件是一流的,許多企業(yè)已經(jīng)使用它來將SQL表轉(zhuǎn)化為PDF,這使每個人都可以在會
議上對其進行審議。另外,JasperReports提供了一個連接配置單元來替代HBase。
3.1010data
lOlOdata是一個分析型云服務(wù),旨在為華爾街的客戶提供服務(wù),甚至包括NYSE
Euronext(紐約泛歐證券交易所)、游戲和電信的客戶。它在設(shè)計上支持可伸縮性的大規(guī)
模并行處理。它也有它自己的查詢語言,支持SQL函數(shù)和廣泛的查詢類型,包括圖和
時間序列分析。這個私有云的方法減少了客戶在基礎(chǔ)設(shè)施管理和擴展方面的壓力。
4.Actian
Actian(也稱IngresCorp)擁有超過1萬客戶而且正在擴增。它通過VectorWise以及
對ParAccel實現(xiàn)了擴展。這些發(fā)展分別導(dǎo)致了ActianVector和ActianMatrix的創(chuàng)建。
它可選擇Apache、Cloudera、Hortonworks以及其他發(fā)行版本。
5.PentahoBusinessAnalytics
從某種意義上說,Pentaho與Jaspersoft相比,盡管Pentaho開始于報告生成引擎,
但它目前通過簡化從新來源中獲取信息的過程來支持大數(shù)據(jù)處理。Pentaho的工具可以
連接到非SQL數(shù)據(jù)庫,例如MongoDB和CassandraoPeterWayner指出,PentahoData(一
個更有趣的圖形編程界面工具)有很多內(nèi)置模塊,你可以把它們拖放到一個圖片上,然
后將它們連接起來。
6.PlacedAnalytics
利用腳本語言以及API,PlacedAnalytics能夠提供針對移動和網(wǎng)絡(luò)應(yīng)用的詳細(xì)用
戶行為分析,包括用戶使用時間和地理位置信息。這些可以幫助開發(fā)者的應(yīng)用更好地
吸引廣告商,也可以幫助開發(fā)者對自己的應(yīng)用進行改善。
7.Cloudera
Cloudera正在努力為開源Hadoop提供支持,同時將數(shù)據(jù)處理框架延伸到一個全面
的“企業(yè)數(shù)據(jù)中心”范疇,這個數(shù)據(jù)中心可以作為首選目標(biāo)和管理企業(yè)所有數(shù)據(jù)的中
心點。Hadoop可以作為目標(biāo)數(shù)據(jù)倉庫、高效的數(shù)據(jù)平臺,或現(xiàn)有數(shù)據(jù)倉庫的ETL來源。
企業(yè)規(guī)模可以用作集成Hadoop與傳統(tǒng)數(shù)據(jù)倉庫的基礎(chǔ)。Cloudera致力于成為數(shù)據(jù)管理
的“重心”。
8.Keen10
Keen10是個強大的移動應(yīng)用分析工具,開發(fā)者只需要簡單到一行代碼,就可以跟
蹤他們想要的關(guān)于他們應(yīng)用的任何信息。開發(fā)者接下來只需做一些Dashboard(類似儀
表盤的智能顯示界面)或者查詢的工作即可。
9.TalendOpenStudio
Talend工具用于協(xié)助進行數(shù)據(jù)質(zhì)量、數(shù)據(jù)集成和數(shù)據(jù)管理等方面的工作。Talend
是一個統(tǒng)一的平臺,它通過提供一個統(tǒng)一的、跨企業(yè)邊界生命周期管理的環(huán)境,使數(shù)
據(jù)管理和應(yīng)用更簡單便捷。這種設(shè)計可以幫助企業(yè)構(gòu)建靈活、高性能的企業(yè)架構(gòu),在
此架構(gòu)下,集成并啟用百分之百開源服務(wù)的分布式應(yīng)用程序變?yōu)榭赡堋?/p>
10.ApacheSpark
ApacheSpark是Hadoop開源生態(tài)系統(tǒng)的新成員,它提供了一個比Hive更快的查
詢引擎,因為它依賴于自己的數(shù)據(jù)處理框架而不是依靠Hadoop的HDFS(Hadoop分布
式文件系統(tǒng))服務(wù)。同時,它還用于事件流處理、實時查詢和機器學(xué)習(xí)等方面。
1.2.3大數(shù)據(jù)的挖掘工具
隨著現(xiàn)代社會對數(shù)據(jù)需求量爆炸式的增長,我們需要借助更有效、更快捷的工具
進行挖掘工作,從而幫助我們更輕松地從巨大的數(shù)據(jù)集中找出關(guān)系、集群、模式、分
類信息等。借助這類工具可以幫助我們做出最準(zhǔn)確的決策,為我們的業(yè)務(wù)獲取更多
收益。
以下是幾種相對較好的數(shù)據(jù)挖掘工具,可以幫助大家從各種角度分析大數(shù)據(jù),并
通過數(shù)據(jù)做出正確的業(yè)務(wù)決策。
1.RapidMiner
RapidMiner是一個用于機器學(xué)習(xí)、數(shù)據(jù)挖掘和分析的試驗環(huán)境,同時用于研究真
實世界的數(shù)據(jù)挖掘。它提供的實驗由很多的算子構(gòu)成,這些算子由詳細(xì)的XML文件記
錄,并被RapidMiner圖形化的用戶接口表現(xiàn)出來。RapidMiner為主要的機器學(xué)習(xí)過程
提供了超過500個算子,并且它結(jié)合了學(xué)習(xí)方案和WEKA學(xué)習(xí)環(huán)境的屬性評估器。它
是一個可以用來做數(shù)據(jù)分析的獨立的工具,同樣也是一個數(shù)據(jù)挖掘引擎,可以用來集
成產(chǎn)品中的工具。
2.WEKA
WEKA(WaikatoEnvironmentforKnowledgeAnalysis,懷卡托智能分析環(huán)境)是一款
非常復(fù)雜的數(shù)據(jù)挖掘工具,它支持幾種經(jīng)典的數(shù)據(jù)挖掘任務(wù),顯著的數(shù)據(jù)預(yù)處理、集
群、分類、回歸、虛擬化以及功能選擇。它的技術(shù)基于假設(shè)數(shù)據(jù)是以一種單個文件或
關(guān)聯(lián)的,每個數(shù)據(jù)點都被許多屬性標(biāo)注。WEKA使用Java的數(shù)據(jù)庫鏈接能力可以訪問
SQL數(shù)據(jù)庫,并可以處理一個數(shù)據(jù)庫的查詢結(jié)果。它主要的用戶接口是Explorer,也
同樣支持相同功能的命令行,或是一種基于組件的知識流接口。
3.R軟件
R軟件是另一種較為流行的GNU開源數(shù)據(jù)挖掘工具,作為一款用于統(tǒng)計分析和圖
形化的計算機語言及分析工具,為了保證性能,它主要是由C語言和FORTRAN語言
編寫的。此外,為方便使用,R軟件提供了一種腳本語言,即R語言。R支持一系列
分析技術(shù),包括統(tǒng)計檢驗、預(yù)測建模、數(shù)據(jù)可視化等。R軟件的優(yōu)點在于函數(shù)都己寫
好,用戶只需知道參數(shù)的形式即可,如果參數(shù)形式不對,R軟件也能“智能地”幫你
適應(yīng)?
4.Orange數(shù)據(jù)挖掘軟件
Orange是一個基于組件的數(shù)據(jù)挖掘和機器學(xué)習(xí)軟件套裝,它的功能、界面友好且
很強大,具有快速而又多功能的可視化編程前端,以便瀏覽數(shù)據(jù)分析和可視化,其綁
定了Python以進行腳本開發(fā)。它包含了完整的一系列的組件以進行數(shù)據(jù)預(yù)處理,并提
供了數(shù)據(jù)賬目、過渡、建模、模式評估和勘探的功能。其由C++和Python開發(fā),它的
圖形庫是由跨平臺的Qt框架開發(fā)。Orange軟件可以對數(shù)據(jù)和模型進行多種圖形化展
示,并能智能搜索合適的可視化形式,支持對數(shù)據(jù)的交互式探索。
5.KNIME
KNIME(KonstanzInformationMiner,康斯坦茨信息挖掘工具)是一款開源的進行數(shù)
據(jù)集成、數(shù)據(jù)分析、數(shù)據(jù)處理的綜合平臺。它讓用戶有能力以可視化的方式創(chuàng)建數(shù)據(jù)
流或數(shù)據(jù)通道,可選擇性地運行一些或所有分析步驟,然后檢查結(jié)果、模型和可交互
的視圖。此外,KNIME基于Eclipse并通過插件的方式來提供更多的功能,用戶可以
為文件、圖片和時間序列加入處理模塊,并可以集成到其他各種各樣的開源項目中,
如R語言和WEKA?
6.JHepWork
JHepWork是一種為科學(xué)家、工程師和學(xué)生所設(shè)計的免費的開源數(shù)據(jù)分析框架,其
主要是用開源庫來創(chuàng)建一個數(shù)據(jù)分析環(huán)境,并提供了豐富的用戶接口,以此來和那些
收費的軟件競爭。它的主要功能是便于繪制科學(xué)計算用的二維和三維的圖形,并包含
了用Java實現(xiàn)的數(shù)學(xué)科學(xué)庫、隨機數(shù)和其他的數(shù)據(jù)挖掘算法。JHepWork基于一個高
級的編程語言Jython,當(dāng)然,Java代碼同樣可以用來調(diào)用JHepWork的數(shù)學(xué)和圖形庫。
7.NLTK
NLTK(NaturalLanguageToolKit,自然語言工具包)最適用于語言處理任務(wù),因為
它可以提供一個語言處理工具,包括數(shù)據(jù)挖掘、機器學(xué)習(xí)、數(shù)據(jù)抓取、情感分析等各
種語言處理任務(wù)。安裝NLTK后,將一個包拖拽到你最喜愛的任務(wù)中,你就可以去做
其他事了。
8.Pentaho
Pentaho為數(shù)據(jù)集成、業(yè)務(wù)分析以及大數(shù)據(jù)處理提供一個全面的平臺。使用這種商
業(yè)工具,我們可以輕松地混合各種來源的數(shù)據(jù),通過對業(yè)務(wù)數(shù)據(jù)進行分析可以為未來
的決策提供正確的信息指導(dǎo)。
以上介紹的幾款軟件都是優(yōu)秀的開源數(shù)據(jù)挖掘軟件,各有所長,同時也各有缺點。
【案例】
數(shù)據(jù)挖掘算法
大數(shù)據(jù)分析的理論核心就是數(shù)據(jù)挖掘算法,各種數(shù)據(jù)挖掘的算法基于不同的數(shù)據(jù)
類型和格式才能更加科學(xué)地呈現(xiàn)出數(shù)據(jù)本身具備的特點,也正是因為這些被全世界統(tǒng)
計學(xué)家所公認(rèn)的各種統(tǒng)計方法才能深入數(shù)據(jù)內(nèi)部,挖掘出公認(rèn)的價值。另外一個方面
也是因為有這些數(shù)據(jù)挖掘的算法才能更快速地處理大數(shù)據(jù),如果一個算法得花上好幾
年才能得出結(jié)論,那大數(shù)據(jù)的價值也就無從說起了。
1.2.4大數(shù)據(jù)的可視化工具
大數(shù)據(jù)的分析是建立在大數(shù)據(jù)可視化的前提之下的,更是其最重要的組成部分之
-O當(dāng)原始數(shù)據(jù)流被以圖像形式表示時,在后期就可以比較容易地根據(jù)其做出準(zhǔn)確
決策。
大數(shù)據(jù)可視化工具應(yīng)該具備的特征為:①能夠處理不同類型的傳入數(shù)據(jù);②能夠
應(yīng)用不同種類的過濾器來調(diào)整結(jié)果;③能夠在分析過程中與數(shù)據(jù)集進行交互;④能夠
連接到其他軟件來接收輸入數(shù)據(jù),或為其他軟件提供輸入數(shù)據(jù);⑤能夠為用戶提供協(xié)
作選項。
下面介紹幾種目前較受歡迎的大數(shù)據(jù)可視化工具。
(1)Jupyter:大數(shù)據(jù)可視化的一站式商店。
Jupyter是一個開源項目,通過十多種編程語言實現(xiàn)大數(shù)據(jù)分析、可視化和軟件開
發(fā)的實時協(xié)作。它的界面包含代碼輸入窗口,并通過運行輸入的代碼以基于所選擇的
可視化技術(shù)提供視覺可讀的圖像。
JupyterNotebook的功能多而強大,可以在團隊中共享,以實現(xiàn)內(nèi)部協(xié)作,并促進
團隊共同合作進行數(shù)據(jù)分析。除此以外,Jupyter還能夠與Spark這樣的多框架進行交
互,這使得對從具有不同輸入源的程序收集的大量密集的數(shù)據(jù)進行數(shù)據(jù)處理時,Jupyter
能夠提供一個全能的解決方案。
(2)Tableau:AI、大數(shù)據(jù)和機器學(xué)習(xí)應(yīng)用可視化的最佳解決方案。
Tableau是大數(shù)據(jù)可視化的市場領(lǐng)導(dǎo)者之一,在為大數(shù)據(jù)操作、深度學(xué)習(xí)算法和多
種類型的AI應(yīng)用程序提供交互式數(shù)據(jù)可視化方面尤為高效。Tableau可以與Amazon
AWS、MySQL、Hadoop,Teradata和SAP協(xié)作,使之成為一個能夠創(chuàng)建詳細(xì)圖形和展
示直觀數(shù)據(jù)的多功能工具。這樣高級管理人員和中間鏈管理人員能夠基于包含大量信
息且容易讀懂的Tableau圖形做出基礎(chǔ)決策。
(3)Google圖表:Google支持的免費而強大的整合功能。
谷歌圖表是大數(shù)據(jù)可視化的最佳解決方案之一,Google對其提供大力的技術(shù)支持,
同時通過Google圖表分析的數(shù)據(jù)也用于訓(xùn)練Google研發(fā)的ALGoogle圖表提供了大
量的可視化類型,從簡單的餅圖、時間序列一直到多維交互矩陣都有。圖表可供調(diào)整
的選項很多。該工具將生成的圖表以HTML5/SVG呈現(xiàn),因此它們可與任何瀏覽器兼
容。Google圖表對VML的支持確保了其與舊版IE瀏覽器的兼容性,并且可以將圖表
移植到最新版本的Android和iOS系統(tǒng)上。更重要的是,Google圖表結(jié)合了來自Google
地圖等多種Google服務(wù)的數(shù)據(jù),生成的交互式圖表不僅可以實時輸入數(shù)據(jù),還可以使
用交互式儀表板進行控制。
(4)D3.js:以任何您需要的方式直觀地顯示大數(shù)據(jù)。
D3.js代表DataDrivenDocument,是一個用于實時交互式大數(shù)據(jù)可視化的JS庫。
因為這不是一個工具,所以用戶在使用它來處理數(shù)據(jù)之前,需要對JavaScript有一個很
好的理解,并能以一種能被其他人理解的形式呈現(xiàn)。除此之外,這個JS庫將數(shù)據(jù)以SVG
和HTML5格式呈現(xiàn),所以像IE7和IE8這樣的舊式瀏覽器不能利用D3.js功能。
從不同來源收集的數(shù)據(jù)如大規(guī)模數(shù)據(jù)將與實時的DOM綁定并以極快的速度生成
交互式動畫(2D和3D)。D3架構(gòu)允許用戶通過各種附件和插件密集地重復(fù)使用代碼。
以上4種可視化工具只不過是大量在線或獨立的數(shù)據(jù)可視化解決方案和工具中的
一部分。使用它們的公司的目的是找到適合他們的工具,并能夠使用這些工具幫助他
們將輸入的原始數(shù)據(jù)轉(zhuǎn)化為一系列清晰易懂的圖像和圖表,通過可視化讓他們能夠做
出有證據(jù)支持的決策。
小結(jié)
大數(shù)據(jù)的本質(zhì)意義是對數(shù)據(jù)進行專業(yè)化的處理而不在于數(shù)據(jù)信息的龐大,對大數(shù)
據(jù)進行處理分析需要借助存儲工具、軟件開發(fā)工具和數(shù)據(jù)挖掘工具,以及大數(shù)據(jù)可視
化工具。我們借助更有效、更快捷的工具進行數(shù)據(jù)挖掘,并建立在大數(shù)據(jù)可視化(將原
始數(shù)據(jù)流以圖像形式表示)的前提之下對大數(shù)據(jù)進行分析,從而幫助我們做出有證據(jù)支
持的決策。
第2章互聯(lián)網(wǎng)大數(shù)據(jù)采集與
獲取實戰(zhàn)要領(lǐng)
數(shù)據(jù)采集,又稱數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)
內(nèi)部的一個接口。比如攝像頭、麥克風(fēng),都是數(shù)據(jù)采集工具。
數(shù)據(jù)采集系統(tǒng)包括:信號、傳感器、激勵器、信號調(diào)理設(shè)備、數(shù)據(jù)采集設(shè)備和應(yīng)
用軟件。
大數(shù)據(jù)在互聯(lián)網(wǎng)中類型也是多種多樣的,其中包含了結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、
非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)最常見,就是具有模式的數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)
不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型,包括所有格式的辦公文檔、文本、圖片、
XML文件、HTML文件、各類報表、圖像和音頻/視頻信息等。大數(shù)據(jù)采集,是大數(shù)
據(jù)分析的入口,所以是相當(dāng)重要的一個環(huán)節(jié)。
數(shù)據(jù)采集現(xiàn)在己經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,數(shù)據(jù)采集領(lǐng)域已經(jīng)發(fā)生了
重要的變化。國內(nèi)外數(shù)據(jù)采集設(shè)備先后問世,將數(shù)據(jù)采集帶入了一個全新的時代,也
為我們在互聯(lián)網(wǎng)中的發(fā)展注入了更多的能量。
2.1互聯(lián)網(wǎng)大數(shù)據(jù)采集與處理技術(shù)概述
互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)是大數(shù)據(jù)領(lǐng)域的一個重要組成部分,它具有分布廣、格式多樣、
非結(jié)構(gòu)化等大數(shù)據(jù)的典型特點,我們需要有針對性地對互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)進行采集、轉(zhuǎn)
換、加工和存儲,尤其在網(wǎng)頁數(shù)據(jù)的采集和處理方面,存在急需突破的較多關(guān)鍵技術(shù)。
互聯(lián)網(wǎng)網(wǎng)頁大數(shù)據(jù)采集就是獲取互聯(lián)網(wǎng)中相關(guān)網(wǎng)頁內(nèi)容的過程,并從中抽取出用
戶所需要的屬性內(nèi)容?;ヂ?lián)網(wǎng)網(wǎng)頁大數(shù)據(jù)處理,就是對抽取出來的網(wǎng)頁數(shù)據(jù)進行內(nèi)容
和格式上的處理,進行轉(zhuǎn)換和加工,使之能夠適應(yīng)用戶的需求,然后存儲以備后用。
2.1.1數(shù)據(jù)采集的基本流程與關(guān)鍵技術(shù)
1.數(shù)據(jù)采集的整體框架
Web爬蟲是一種互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)的采集工具。Web爬蟲的整個抓取過程主要包括
以下6個部分。
(1)網(wǎng)站頁面(SitePage):用來獲取網(wǎng)站的網(wǎng)頁內(nèi)容。
(2)內(nèi)容抽取(ContentExtractor):用來從網(wǎng)頁內(nèi)容中抽取所需屬性的內(nèi)容值。
(3)鏈接抽取(URLExtractor):用來從網(wǎng)頁內(nèi)容中抽取出該網(wǎng)站正文內(nèi)容的鏈接
地址。
(4)鏈接過濾(URLFilter):用來判斷該鏈接地址的網(wǎng)頁內(nèi)容是否已經(jīng)被抓取過。
(5)URL隊列(URLQueue):用來為Web爬蟲提供需要抓取數(shù)據(jù)網(wǎng)站的URL。
(6)數(shù)據(jù)(Data):它包含SiteURL(需要抓取數(shù)據(jù)網(wǎng)站的URL信息)、SpiderURL(B
經(jīng)抓取過數(shù)據(jù)的網(wǎng)頁URL),SpiderContent(經(jīng)過抽取的網(wǎng)頁內(nèi)容)三個部分。
2.數(shù)據(jù)采集的基本流程
整個數(shù)據(jù)采集過程包括以下9個步驟。
zX
41I
\/將需要抓取數(shù)據(jù)的網(wǎng)站的URL信息(SiteURL)寫入URL隊列。
z2\
(?
x7Web爬蟲從URL隊列中獲取需要抓取數(shù)據(jù)的網(wǎng)站的SiteURL信息、。
z\
(3)
x/獲取某個具體網(wǎng)站的網(wǎng)頁內(nèi)容。
4
從網(wǎng)頁內(nèi)容中抽取出該網(wǎng)站正文頁內(nèi)容的鏈接地址。
z
(5
x從數(shù)據(jù)庫中讀取已經(jīng)抓取過內(nèi)容的網(wǎng)頁地址(SpiderURL)。
6
過濾URL,將當(dāng)前的URL和已經(jīng)抓取過的URL進行比較。
z
(7
x如果該網(wǎng)頁地址沒有被抓取過,則將該地址寫入SpiderURL數(shù)據(jù)庫;如果該
地址己經(jīng)被抓取過,則放棄對這個地址的抓取操作。
(8)獲取該地址的網(wǎng)頁內(nèi)容,并抽取出所需屬性的內(nèi)容值。
(9)將抽取的網(wǎng)頁內(nèi)容寫入數(shù)據(jù)庫。
3.數(shù)據(jù)采集的關(guān)鍵技術(shù)——鏈接過濾
鏈接過濾的實質(zhì)就是判斷一個鏈接(當(dāng)前鏈接)是不是在一個鏈接集合(已經(jīng)抓取過
的鏈接)里面。在對網(wǎng)頁大數(shù)據(jù)的采集中,可以采用布隆過濾器(BloomFilter)來實現(xiàn)對
鏈接的過濾。
布隆過濾器的基本思想是:當(dāng)一個元素被加入集合時,通過k個散列函數(shù)將這個
元素映射成一個位數(shù)組中的/個點,將它們置為k檢索時,我們只需看看這些點是否
都是1大概就知道集合中有沒有它了:如果這些點有任何一個0,則被檢元素一定不在;
如果都是1,則被檢元素很可能在。
布隆過濾器在空間和時間方面的優(yōu)勢體現(xiàn)在以下三方面。
(1)復(fù)雜度方面:布隆過濾器的存儲空間和插入/查詢時間都是常數(shù)(即復(fù)雜度為
0(6)。
(2)關(guān)系方面:散列函數(shù)相互之間沒有關(guān)聯(lián)關(guān)系,方便由硬件并行實現(xiàn)。
(3)存儲方面:布隆過濾器不需要存儲元素本身,在某些對保密要求非常嚴(yán)格的
場合有優(yōu)勢。
布隆過濾器的具體實現(xiàn)方法是:已經(jīng)抓取過的每個URL,經(jīng)過k個Hash函數(shù)(也
稱散列函數(shù))的計算,得出k個值,再和一個巨大的二進制位(bit)數(shù)組的這k個位置的
元素對應(yīng)起來(這些位置數(shù)組元素的值被設(shè)置為1)。在需要判斷某個URL是否被抓取
過時,先用%個Hash函數(shù)對該URL計算出我個值,然后查詢巨大的bit數(shù)組內(nèi)這八個
位置上的值,如果均為1,則是已經(jīng)被抓取過,否則沒被抓取過。
2.1.2數(shù)據(jù)處理的基本流程與關(guān)鍵技術(shù)
1.數(shù)據(jù)處理的整體框架
數(shù)據(jù)處理的整個過程主要包括以下4個部分。
(1)分詞(WordsAnalyze):用來對抓取到的網(wǎng)頁內(nèi)容進行切詞處理。
(2)排重(ContentDeduplicate):用來對眾多的網(wǎng)頁內(nèi)容進行排重。
(3)整合(Integrate):用來對不同來源的數(shù)據(jù)內(nèi)容進行格式上的整合。
(4)數(shù)據(jù):包含SpiderData(Web爬蟲從網(wǎng)頁中抽取出來的數(shù)據(jù))和DPData(在整
個數(shù)據(jù)處理過程中產(chǎn)生的數(shù)據(jù))兩部分?jǐn)?shù)據(jù)。
2.數(shù)據(jù)處理的基本流程
一個完整的數(shù)據(jù)處理過程包括以下6個步驟。
(1)對抓取來的網(wǎng)頁內(nèi)容進行分詞。
(2)將分詞處理的結(jié)果寫入數(shù)據(jù)庫。
(3)對抓取來的網(wǎng)頁內(nèi)容進行排重。
(4)將排重處理后的數(shù)據(jù)寫入數(shù)據(jù)庫。
(5)根據(jù)之前的處理結(jié)果,對數(shù)據(jù)進行整合。
(6)將整合后的結(jié)果寫入數(shù)據(jù)庫。
3.數(shù)據(jù)處理的關(guān)鍵技術(shù)——排重
排重就是排除掉與主題相重復(fù)項的過程,網(wǎng)頁排重就是通過兩個網(wǎng)頁之間的相似
度來排除重復(fù)項。SimHash算法是一種高效的海量文本排重算法,相比于余弦角、歐
式距離、Jaccard相似系數(shù)等算法,SimHash算法避免了對文本兩兩進行相似度比較的
復(fù)雜方式,從而大大提高了效率。
采用SimHash算法來進行抓取網(wǎng)頁內(nèi)容的排重,可以容納更大的數(shù)據(jù)量,提供更
快的數(shù)據(jù)處理速度,實現(xiàn)大數(shù)據(jù)的快速處理。SimHash算法的基本思想描述如下。
輸入:一個N維向量匕例如文本的特征向量,每個特征具有一定權(quán)重。
輸出:一個C位的二進制簽名S。
(1)初始化一個C維向量。為0,C位的二進制簽名S為0。
(2)對向量V中的每一個特征,使用傳統(tǒng)的Hash算法計算出一個C位的散列值從
對1W1WC,如果〃的第i位為1,則。的第i個元素加上該特征的權(quán)重;否則,。的
第i個元素減去該特征的權(quán)重。
(3)如果。的第i個元素大于0,則S的第i位為1;否則為0。
(4)返回簽名S。
在對每篇文檔根據(jù)SimHash算法算出簽名后,再計算兩個簽名的漢明距離(兩個二
進制異或后1的個數(shù))即可。根據(jù)經(jīng)驗值,對64位的SimHash算法,漢明距離在3以
內(nèi)的可以認(rèn)為相似度比較高。
4.數(shù)據(jù)處理的關(guān)鍵技術(shù)——整合
整合是把抓取來的網(wǎng)頁內(nèi)容與各個公司之間建立對應(yīng)關(guān)系。對每個公司來說,可
以用一組關(guān)鍵詞來對該公司進行描述,同樣的,經(jīng)過DP處理之后的網(wǎng)頁內(nèi)容,也可
以用一組關(guān)鍵詞來進行描述。因此,整合就變成了公司關(guān)鍵詞和內(nèi)容關(guān)鍵詞之間的
匹配。
對于網(wǎng)頁內(nèi)容的分詞結(jié)果來說,存在以下兩個特點。
(1)分詞結(jié)果的數(shù)量很大。
(2)大多數(shù)的分詞對描述該網(wǎng)頁內(nèi)容來說是沒有貢獻的。因此,對網(wǎng)頁的分詞結(jié)
果進行簡化,使用詞頻最高的若干個詞匯來描述該網(wǎng)頁內(nèi)容。經(jīng)簡化后,兩組關(guān)鍵詞
的匹配效率就得到了很大的提升,同時準(zhǔn)確度也得到了保障;經(jīng)過整合之后,抓取來
的網(wǎng)頁內(nèi)容與公司之間就建立了一個對應(yīng)關(guān)系,就能知道某個具體的公司有著怎樣的
數(shù)據(jù)了。
2.2Web頁面數(shù)據(jù)獲取實戰(zhàn)方法
2.2.1Jsoup技術(shù)與頁面數(shù)據(jù)獲取
Jso叩是一款比較好的Java版HTML解析器,它可以直接解析某個URL地址、
HTML文本內(nèi)容,并有一套好用的API,可通過DOM、CSS以及類似于jQuery的操
作方法來取出和操作數(shù)據(jù)。
1.Jsoup的功能
Jsoup的功能如下。
(1)從一個URL、文件或字符串中解析HTML。
(2)使用DOM或CSS選擇器來查找、取出數(shù)據(jù)。
(3)可操作HTML元素、屬性、文本。
2.Jsoup的使用方法
Jsoup可從字符串、URL地址以及本地文件來加載HTML文檔,并生成Document
對象實例。
(1)Document對象(一個文檔的對象模型):文檔由多個元素和文本節(jié)點組成(以及
其他輔助節(jié)點)。
(2)一個元素包含一個子節(jié)點集合,并擁有一個父元素。它們還提供了一個唯一
的子元素過濾列表。
1)從字符串中輸入HTML文檔
(1)解析一個HTML字符串。
使用靜態(tài)方法(Stringhtml)或(Stringhtml,StringbaseUri),代碼如下:
Stringhtml=H<html><heaci><title>Firstparse</titlex/head>u
+H<body><p>ParsedHTMLintoadoc.</px/body></html>n;
Documentdoc=(html);
說明:
parse(Stringhtml,StringbaseUri)這個方法能夠?qū)⑤斎氲腍TML解析為一個新的文
檔(Document),參數(shù)baseUri是用來將相對URL轉(zhuǎn)成絕對URL,并指定從哪個網(wǎng)站
獲取文檔。如這個方法不適用,你可以使用parse(Stringhtml)方法來解析成HTML字
符串(如上面的示例)。只要解析的不是空字符串,就能返回一個結(jié)構(gòu)合理的文檔,其中
包含(至少)一個head和一個body元素。如果擁有了一個Document,你就可以使用
Document中適當(dāng)?shù)姆椒ɑ蚱涓割怑lement(元素)和Node(節(jié)點)中的方法來取得相關(guān)
數(shù)據(jù)。
(2)解析一個body片段。
假設(shè)相對一個HTML片段(如一個div包含一對p標(biāo)簽,一個不完整的HTML文
檔)進行解析。這個HTML片段可以是用戶提交的一條評論或在一個CMS頁面中編輯
body部分??梢允褂肂odyFragment(Stringhtml)方法,代碼如下:
Stringhtml=H<div><p>Loremipsum.</p>";
Documentdoc=BodyFragment(html);
Elementbody=();
說明:
①parseBodyFragment方法創(chuàng)建一個空殼的文檔,并插入解析過的HTML到
body元素中。假如你使用正常的(Stringhtml)方法,通常你也可以得到相同的結(jié)果,但
是明確將用戶輸入作為body片段處理,以確保用戶所提供的任何糟糕的HTML都將
被解析成body元素。
②()方法能夠取得文檔body元素的所有子元素,與ementsByTag(“body”)相
同。
(3)從一個URL加載一個Document。
從一個網(wǎng)站獲取和解析一個HTML文檔,并查找其中的相關(guān)數(shù)據(jù),可以使用
ct(Stringurl)方法,代碼如下:
Documentdoc=ct("Mhk/n).get();
Stringtitle=();
說明:
①connect(Stringurl)方法創(chuàng)建一個新的Connection(連接)和get()方法取得和解析
一個HTML文件。如果從該URL獲取HTML時發(fā)生錯誤,便會拋出lOException異
常,應(yīng)適當(dāng)處理。
②Connection接口還提供一個方法鏈來解決特殊請求,方法如下:
Documentdoc=ct("")
.data("query","Java")
.userAgent("Mozilla”)
.cookie("auth"z"token")
.timeout(3000)
.post();
這個方法只支持WebURLs(HTTP和HTTPS協(xié)議),假如你需要從一個文件加載,
可以使用parse(Filein,StringcharsetName)代替。
(4)從文件中加載HTML文檔。
假如在本機硬盤上有一個HTML文件,需要對它進行解析從中抽取數(shù)據(jù)或進行修
改,可以使用靜態(tài)方法(Filein,StringcharsetName,StringbaseUri),代碼如下:
Fileinput=newFile("/tmp/n);
Documentdoc=(input,"UTF-8n,
說明:
①parse(Filein,StringcharsetName,StringbaseUri)這個方法用來加載和解析一個
HTML文件。如果在加載文件的時候發(fā)生錯誤,將拋出lOException異常,應(yīng)作適當(dāng)
處理。
②baseUri參數(shù)用于解決文件中URLs是相對路徑的問題(如果不需要可以傳入一
個空的字符串)。
③還有一個方法parse(Filein,StringcharsetName),它使用文件的路徑作為
baseUrio這個方法適用于被解析文件位于網(wǎng)站的本地文件系統(tǒng),且相關(guān)鏈接也指向該
文件系統(tǒng)。
2)數(shù)據(jù)抽取
(1)使用DOM方法來遍歷一個文檔。
假設(shè)有一個HTML文檔要從中提取數(shù)據(jù),并了解此文檔的結(jié)構(gòu)。將HTML解析成
一個Document對象之后,就可以使用類似于DOM的方法進行操作,代碼如下:
Fileinput=newFile("/tmp/H);
Documentdoc=(input,"UTF-8","n);
Elementcontent=ementByld(Mcontentn);
Elementslinks=ementsByTag(;
for(Elementlink:links){
StringlinkHref=(nhref");
StringlinkText=();
}
說明:Elements(元素)對象提供了一系列類似于DOM的方法來查找元素,抽取并
處理其中的數(shù)據(jù),這里不做列舉。
(2)使用選擇器語法查找元素。
如果想使用類似于CSS或jQuery的語法來查找和操作元素,可以使用t(String
selector)和t(Stringselector)方法,代碼如下:
Fileinput=newFile(H/tmp/");
Documentdoc=(input,"UTF-8”,H;
Elementslinks=t("a[href]”);//帶有href屬性的a元素
Elementspngs=t("img[src$=.png]");
//擴展名為.png的圖片
Elementmasthead=t("ead*1).first();
//class等于masthead的div標(biāo)簽
ElementsresultLinks=t(nh3.r>a");//在h3元素之后的a元素
說明:
①JsoupElements對象支持類似于CSS(或jQuery)的選擇器語法,來實現(xiàn)非常強
大和靈活的查找功能。
②這個select方法在Document、Element或Elements對象中都可以使用,且是
上下文相關(guān)的,因此可實現(xiàn)指定元素的過濾,或者鏈?zhǔn)竭x擇訪問。
③select方法將返回一個Elements集合,并提供一組方法來抽取和處理結(jié)果。
(3)從元素抽取屬性、文本和HTML。
在解析獲得一個Document實例對象,并查找到一些元素后,需要取得在這些元素
中的數(shù)據(jù),可以使用的方法有:①要取得一個屬性的值,可以使用(Stringkey)方法;
②對于一個元素中的文本,可以使用()方法;③對于要取得元素或?qū)傩灾械腍TML內(nèi)
容,可以使用()或Html()方法。
代碼如下:
Stringhtml=**<p>An<ahref=*'><b>example</b></a>link.</p>n;
Documentdoc=(h七ml);〃解析HTML字符串返回一個Document對象實例
Elementlink=t("a").first();//查找第一個a元素
Stringtext=().text();//"Anexamplelink"〃取得字符串中的文本
StringlinkHref=(“href");//"H
//取得鏈接地址
StringlinkText=();//"example””//取得鏈接地址中的文本
StringlinkOuterH=Html();
//"<ahref=n"><b>example</b></a>"
StringlinklnnerH=();//“<b〉example〈/b〉”//取得鏈接內(nèi)的html內(nèi)容
說明:
上述方法是元素數(shù)據(jù)訪問的核心辦法。此外也有其他一些方法可以使用,如:()、
me()、Name。和ass(StringclassName)。這些訪問器方法都有相應(yīng)的setter方法來更改數(shù)
據(jù)。
(4)URLs處理。
如果有一個包含相對URLs路徑的HTML文檔,要將這些相對路徑轉(zhuǎn)換成絕對路
徑的URLs,可采用以下方法:在解析文檔時確保有指定的baseURI,然后使用abs:
屬性前綴來取得包含baseURI的絕對路徑。代碼如下:
Documentdoc=ct(H").get();
Elementlink=t("a").first();
StringrelHref=("href");//=="/"
StringabsHref=(Habs:href");//""
說明:
在HTML元素中,URLs經(jīng)常寫成相對于文檔位置的相對路徑:<a
href="/download">...</a>0當(dāng)你使用(Stringkey)方法來取得a元素的href屬性時,它將
直接返回在HTML源碼中指定的值。
如果你需要取得一個絕對路徑,需要在屬性名前加abs:。這樣就可以返回包含根
路徑的URL地址attr("abs:hre『)。因此,在解析HTML文檔時,定義baseURI非常重
要。如果你不想使用前綴abs:,還可使用l(Stringkey)方法實現(xiàn)同樣的功能。
3)數(shù)據(jù)修改
(1)設(shè)置屬性值。
如果在解析一個Document之后想修改其中的某些屬性值,然后再保存到磁盤或都
輸出到前臺頁面,設(shè)置屬性可采用的方法有(Stringkey,Stringvalue)和(Stringkey,
Stringvalue);修改一個元素的class屬性,可以使用ass(StringclassName)和eClass(String
className)方法。
Elements提供了批量操作元素屬性和class的方法,例如要為div中的每一個a元
素都添加一個rel="nofollow”,可以使用如下方法:
t(Hntsan).attr(nreln,"nofollow**);
說明:
與Element中的其他方法一樣,attr()方法也是返回Element(或在使用選擇器時返回
Elements集合)。這樣能夠很方便地使用方法連用的書寫方式。如以下代碼:
t("ead").attr("title","jsoup").addClass("round-box");
(2)設(shè)置元素的HTML內(nèi)容。
如果想獲取一個元素中的HTML內(nèi)容,可以使用Element對象中的HTML設(shè)置方
法,具體方法如下:
Elementdiv=t("divn).first();//<div></div>
(n<p>loremipsum</p>n);//<div><p>loremipsum</px/div>
nd("<p>First</p>n);//在div前添力口html內(nèi)容
d("<p>Last</p>");//在div后添力口html內(nèi)容
//添完后的結(jié)果:<div><p>First</pxp>loremipsum</pxp>Last</px/div>
Elementspan=t("span").first();//<span>One</span>
(n<lixahref=,'x/ax/li〉”);
//添完后的結(jié)果:<li><ahref="H><span>One</span></a></li>
說明:
①(Stringhtml)這個方法將先清除元素中的HTML內(nèi)容,然后用傳入的HTML
代替。
②nd(StringErst)和d(Stringlast)方法用于分別在元素內(nèi)部HTML的前面和后面
添加HTML內(nèi)容。
③(Stringaround)方法用來對元素包裝一個外部HTML內(nèi)容。
(3)設(shè)置元素的文本內(nèi)容。
如果要修改一個HTML文檔中的文本內(nèi)容,方法如下:
Elementdiv=t(ndivn).first();//<div></div>
("five>four");//<div>five>four</div>
nd("Firstn);
d("Last");
//now:<div>Firstfive>fourLast</div>
說明:
文本設(shè)置方法與HTMLsetter方法相同:①(Stringtext)將清除一個元素中的內(nèi)部
HTML內(nèi)容,然后用提供的文本進行代替:②nd(Stringfirst)和d(Stringlast)將分別在元
素的內(nèi)部html前后添加文本節(jié)點。
如果傳入的文本含有像<,>等這樣的字符,將作為文本處理,而不是HTMLo
2.2.2應(yīng)對特定領(lǐng)域的DeepWeb數(shù)據(jù)獲取技術(shù)
1.DeepWeb概述
DeepWeb(深網(wǎng)),即深層網(wǎng)絡(luò),也叫不可見網(wǎng)、隱藏網(wǎng),是指萬維網(wǎng)上那些不能
被標(biāo)準(zhǔn)搜索引擎索引的非表面網(wǎng)絡(luò)內(nèi)容。我們平常使用搜索引擎上網(wǎng)接觸到的即為表
層網(wǎng)絡(luò)(SurfaceWeb)。
與SurfaceWeb相比,DeepWeb隱藏著更豐富及“專業(yè)"的信息。根據(jù)之前對Deep
Web做得較為全面的宏觀統(tǒng)計,提出對DeepWeb的定義主要指的是Web數(shù)據(jù)庫,指
出整個Web上大約有十萬個的Web數(shù)據(jù)庫,并從宏觀上對DeepWeb做了定量的調(diào)查
統(tǒng)計,其中部分的結(jié)果如下:
(1)DeepWeb蘊含的信息量是SurfaceWeb的400~500倍。
(2)對DeepWeb數(shù)據(jù)的訪問量比SurfaceWeb要高出15%。
(3)DeepWeb蘊含的信息量比SurfaceWeb的質(zhì)量更高。
(4)DeepWeb的增長速度要遠(yuǎn)大于SurfaceWeb。
(5)超過50%的DeepWeb的內(nèi)容是特定于某個域的,即面向某個領(lǐng)域。
(6)整個DeepWeb覆蓋了現(xiàn)實世界中的各個領(lǐng)域,如商業(yè)、教育、政府等。
(7)DeepWeb上95%的信息是可以公開訪問的,即免費獲取。
2.DeepWeb不可直接索引的原因
DeepWeb的內(nèi)容形式包括:動態(tài)內(nèi)容、未被鏈接的內(nèi)容、私人網(wǎng)站、Contextual
Web(語境網(wǎng)絡(luò))、被限制的訪問內(nèi)容、腳本內(nèi)容、非HTML/文本內(nèi)容等?;贒eepWeb
的上述內(nèi)容形式,DeepWeb不可索引的原因包括以下方面。
(1)某些DeepWeb的內(nèi)容由于未與外網(wǎng)連接,網(wǎng)絡(luò)爬蟲無法通過URL獲取到這
些內(nèi)容。
(2)DeepWeb的內(nèi)容屬于非表面網(wǎng)絡(luò)上的內(nèi)容,用戶想獲取內(nèi)容一般需填寫表單
發(fā)送請求后生成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)店鋪裝修協(xié)議:2024版改造項目
- 二零二五年度金融科技產(chǎn)品測試與評估合同3篇
- 2025年中國玉米種衣劑市場調(diào)查研究報告
- 人工智能在智能穿戴-深度研究
- 二零二五年度跨區(qū)域數(shù)據(jù)安全協(xié)議搭建與執(zhí)行合同4篇
- 2025至2031年中國圖書檢測儀行業(yè)投資前景及策略咨詢研究報告
- 二零二四年校服銷售與校園信息化建設(shè)合作合同3篇
- 2025至2031年中國CO2氣體焊機行業(yè)投資前景及策略咨詢研究報告
- 2025年度環(huán)保項目投資合作協(xié)議范本
- 2025至2030年中國立式工作燈數(shù)據(jù)監(jiān)測研究報告
- 衛(wèi)生服務(wù)個人基本信息表
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年湖北省知名中小學(xué)教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時優(yōu)化研究
- 燃?xì)庑袠I(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識點
- 人教版(2024新版)七年級上冊英語期中+期末學(xué)業(yè)質(zhì)量測試卷 2套(含答案)
- 安華農(nóng)業(yè)保險股份有限公司北京市地方財政生豬價格指數(shù)保險條款(風(fēng)險敏感型)
評論
0/150
提交評論