




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大數(shù)據(jù)分析的三個(gè)技巧【文章摘要】大數(shù)據(jù)的性質(zhì)是有他的三個(gè)特點(diǎn)〔數(shù)據(jù)量大、種類(lèi)多、處理速度快〕決定的,數(shù)據(jù)分析的角色和作用理所當(dāng)然是由大數(shù)據(jù)的性質(zhì)決定的。當(dāng)數(shù)據(jù)分析作用于大數(shù)據(jù)時(shí),大數(shù)據(jù)必須身兼數(shù)職。意思就是數(shù)據(jù)分析在一個(gè)組織中扮演著多種角色和擔(dān)負(fù)著多重責(zé)任。數(shù)據(jù)分析的職位是由DJPatil和JeffHammerbacher制定的,他們?cè)噲D稱(chēng)呼數(shù)據(jù)組的同事們,而又不想因?yàn)榉Q(chēng)呼而限制他們的能力。〔becauseofimproperjobtitlelikebusinessanalystorresearchscientistBuildingDataScienceTeams〕隨著大數(shù)據(jù)在驅(qū)動(dòng)企業(yè)成功中越來(lái)越有決定性作用,數(shù)據(jù)分析也變得越來(lái)越受歡送。然而,一些領(lǐng)導(dǎo)者對(duì)數(shù)據(jù)分析扮演的角色和它所起的作用仍然不是很了解,就像很多時(shí)候領(lǐng)導(dǎo)者不知道怎么從大數(shù)據(jù)中抽取有用的信息,雖然很清楚的知道這些大數(shù)據(jù)是很可信的。他們的腳步落后了——他們的眼光在大數(shù)據(jù)的利用上其實(shí)是模糊的。大數(shù)據(jù)的性質(zhì)是有他的三個(gè)特點(diǎn)〔數(shù)據(jù)量大、種類(lèi)多、處理速度快〕決定的,數(shù)據(jù)分析的角色和作用理所當(dāng)然是由大數(shù)據(jù)的性質(zhì)決定的。當(dāng)數(shù)據(jù)分析作用于大數(shù)據(jù)時(shí),大數(shù)據(jù)必須身兼數(shù)職。意思就是數(shù)據(jù)分析在一個(gè)組織中扮演著多種角色和擔(dān)負(fù)著多重責(zé)任。多種知識(shí)的掌握為了解決數(shù)據(jù)量大的問(wèn)題,大數(shù)據(jù)平臺(tái)〔例如:ApacheHadoop、LexisNexisHPPC〕要求數(shù)據(jù)是被整理過(guò)的。數(shù)據(jù)分析員應(yīng)該具有大數(shù)據(jù)平臺(tái)應(yīng)用的全方位知識(shí),這樣才能熟練的應(yīng)用數(shù)據(jù)平臺(tái)處理大數(shù)據(jù)。數(shù)據(jù)分析元應(yīng)當(dāng)具有以下知識(shí):1、了解大數(shù)據(jù)平臺(tái)的框架,例如:DFS和MapReduce,他們的編程框架提供強(qiáng)大的應(yīng)用程序設(shè)計(jì)。這就意味著數(shù)據(jù)分析員還要有軟件構(gòu)筑和設(shè)計(jì)的能力。2、精通大數(shù)據(jù)平臺(tái)支持的編程語(yǔ)言,例如:Java,Python,C++,orECL,等等。3、具有熟練的數(shù)據(jù)庫(kù)知識(shí),特別是用到SQL語(yǔ)言的數(shù)據(jù)庫(kù),像:HBase,CouchDB,等等。因?yàn)榇髷?shù)據(jù)平臺(tái)經(jīng)常需要數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和轉(zhuǎn)換數(shù)據(jù)。4、具有數(shù)學(xué)/統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘領(lǐng)域的專(zhuān)業(yè)知識(shí)。一個(gè)企業(yè)的成功不是由數(shù)據(jù)量決定的,而是由能否成功的從大數(shù)據(jù)中發(fā)現(xiàn)和抽取有用的知識(shí)模式和關(guān)系決定的,然后用這些有價(jià)值的信息創(chuàng)造出有價(jià)值的產(chǎn)品。統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘可以很好的用于理解數(shù)據(jù)和開(kāi)掘數(shù)據(jù)的價(jià)值。自然,為了成功數(shù)據(jù)分析者必須具備這些領(lǐng)域的專(zhuān)門(mén)知識(shí)。會(huì)使用一些數(shù)據(jù)挖掘工具或者平臺(tái)〔例如:R,Excel,SPSSandSAS〕是最好的,可以《TopAnalyticsandbigdatasoftwaretools》這本書(shū)。5、熟練應(yīng)用自然語(yǔ)言處理的軟件或工具。大數(shù)據(jù)的內(nèi)容大都來(lái)自于文本文件、新聞、社交媒體和報(bào)告、建議書(shū)等等。因此了解和掌握至少一種自然語(yǔ)言處理軟件或工具對(duì)于做一個(gè)成功的分析者起著決定性的作用。6、應(yīng)用至少一種數(shù)據(jù)可視化工具。為了更有效的演示數(shù)據(jù)存在的模式和關(guān)系,能應(yīng)用好數(shù)據(jù)可視化工具無(wú)疑是對(duì)數(shù)據(jù)分析員的一個(gè)加分。這里有20款數(shù)據(jù)可視化工具的鏈接。創(chuàng)新——好奇隨著數(shù)據(jù)變化速度的加快,經(jīng)常也會(huì)有新的發(fā)現(xiàn)和問(wèn)題出現(xiàn),數(shù)據(jù)分析員應(yīng)該對(duì)那些變化敏感、對(duì)新發(fā)現(xiàn)好奇,并且找出應(yīng)對(duì)新問(wèn)題的方法。他/她也要熱情的及時(shí)相互溝通,從新問(wèn)題中探索新產(chǎn)品的思路和解決方案,成為產(chǎn)品創(chuàng)新的駕馭者。商業(yè)技能首先,數(shù)據(jù)分析員多元化的性質(zhì)決定了數(shù)據(jù)分析員要好很強(qiáng)的溝通能力,在企業(yè)里數(shù)據(jù)分析員必須和不同的人溝通,其中包括:溝通和理解業(yè)務(wù)需求、應(yīng)用程序的要求、把數(shù)據(jù)的模式和關(guān)系翻譯給市場(chǎng)部、產(chǎn)品開(kāi)發(fā)組和公司高管看。對(duì)于企業(yè)來(lái)說(shuō)有效的溝通是及時(shí)采取行動(dòng)應(yīng)對(duì)大數(shù)據(jù)新發(fā)現(xiàn)的關(guān)鍵。數(shù)據(jù)分析員應(yīng)該是能聯(lián)系所有,很好的溝通者。第二、數(shù)據(jù)分析員要具有良好的規(guī)劃和組織能力。這樣他/她才能巧妙地處理多個(gè)任務(wù)、樹(shù)立正確的優(yōu)先順序、保證按時(shí)完成任務(wù)。第三,數(shù)據(jù)分析員應(yīng)該具有說(shuō)服力、激情、和演講能力。才能引導(dǎo)人們基于數(shù)據(jù)的發(fā)現(xiàn)做出正確的決定,讓人們相信新發(fā)現(xiàn)的價(jià)值。數(shù)據(jù)分析員在某種意義上說(shuō)是領(lǐng)導(dǎo)者,驅(qū)動(dòng)產(chǎn)品創(chuàng)新。所有這些大數(shù)據(jù)的性質(zhì)決定了數(shù)據(jù)分析員該具備的技巧和他們?cè)谄髽I(yè)中扮演的角色。盤(pán)點(diǎn)大數(shù)據(jù)分析的十二大殺手锏當(dāng)數(shù)據(jù)以成百上千TB不斷增長(zhǎng)的時(shí)候,我們需要一種獨(dú)特技術(shù)來(lái)應(yīng)對(duì)這種前所未有的挑戰(zhàn)。大數(shù)據(jù)分析迎來(lái)大時(shí)代全球各行各業(yè)的組織機(jī)構(gòu)已經(jīng)意識(shí)到,最準(zhǔn)確的商務(wù)決策來(lái)自于事實(shí),而不是憑空臆想。這也就意味著,他們需要在內(nèi)部交易系統(tǒng)的歷史信息之外,采用基于數(shù)據(jù)分析的決策模型和技術(shù)支持?;ヂ?lián)網(wǎng)點(diǎn)擊數(shù)據(jù)、傳感數(shù)據(jù)、日志文件、具有豐富地理空間信息的移動(dòng)數(shù)據(jù)和涉及網(wǎng)絡(luò)的各類(lèi)評(píng)論,成為了海量信息的多種形式。極具挑戰(zhàn)性的是,傳統(tǒng)的數(shù)據(jù)庫(kù)部署不能處理數(shù)TB數(shù)據(jù),也不能很好的支持高級(jí)別的數(shù)據(jù)分析。在過(guò)去十幾年中,大規(guī)模并行處理〔MPP〕平臺(tái)和列存儲(chǔ)數(shù)據(jù)庫(kù)開(kāi)啟了新一輪數(shù)據(jù)分析史上的革命。而且近年來(lái)技術(shù)不斷開(kāi)展,我們開(kāi)始看到,技術(shù)升級(jí)帶來(lái)的架構(gòu)之間的界限變得更加模糊。更為重要的是,開(kāi)始逐步出現(xiàn)了處理半結(jié)構(gòu)化和非結(jié)構(gòu)化信息的NoSQL等平臺(tái)。大數(shù)據(jù)分析迎來(lái)大時(shí)代本文中,我們將向大家介紹迄今為止,包括EMC的Greenplum、Hadoop和MapReduce等提供大數(shù)據(jù)分析的產(chǎn)品。此外,惠普前段時(shí)間收購(gòu)實(shí)時(shí)分析平臺(tái)Vertica、IBM獨(dú)立的基于DB2智能分析系統(tǒng)和Netezza的相關(guān)產(chǎn)品。當(dāng)然,也有微軟的ParallelDataWarehouse、SAP旗下公司Sybase的SybaseIQ數(shù)據(jù)倉(cāng)庫(kù)分析工具等。下面,就讓我們來(lái)了解業(yè)界大數(shù)據(jù)分析的這十二大產(chǎn)品:1.模塊化EMCAppliance處理多種數(shù)據(jù)類(lèi)型2023年EMC收購(gòu)了Greenplum,隨后,利用EMC自身存儲(chǔ)硬件和支持復(fù)制與備份功能的Greenplum大規(guī)模并行處理〔MPP〕數(shù)據(jù)庫(kù),推出了EMCGreenplumDataComputingAppliance(DCA)。通過(guò)與SAS和MapR等合作伙伴,DCA擴(kuò)大了對(duì)Greenplum的數(shù)據(jù)庫(kù)支持。支持大數(shù)據(jù)分析的EMCAppliance今年5月,EMC推出了自己的Hadoop軟件工具,而且該公司還承諾,今年秋季發(fā)布的模塊化DCA將支持GreenplumSQL/關(guān)系型數(shù)據(jù)庫(kù),Hadoop部署也能在同樣的設(shè)備上得到支持。借助Hadoop,EMC能夠解決諸如網(wǎng)絡(luò)點(diǎn)擊數(shù)據(jù)、非結(jié)構(gòu)數(shù)據(jù)等真正大數(shù)據(jù)分析的困難。模塊化的DCA也能夠在同樣的設(shè)備上支持長(zhǎng)期保存的高容量的存儲(chǔ)模塊,從而滿足監(jiān)測(cè)需求。2.Hadoop和MapReduce提煉大數(shù)據(jù)Hadoop是一個(gè)開(kāi)放源碼的分布式數(shù)據(jù)處理系統(tǒng)架構(gòu),主要面向存儲(chǔ)和處理結(jié)構(gòu)化、半結(jié)構(gòu)化或非結(jié)構(gòu)化、真正意義上的大數(shù)據(jù)〔通常成百上千的TB甚至PB級(jí)別數(shù)據(jù)〕應(yīng)用。網(wǎng)絡(luò)點(diǎn)擊和社交媒體分析應(yīng)用,正在極大地推動(dòng)應(yīng)用需求。Hadoop提供的MapReduce〔和其他一些環(huán)境〕是處理大數(shù)據(jù)集理想解決方案。MapReduce能將大數(shù)據(jù)問(wèn)題分解成多個(gè)子問(wèn)題,將它們分配到成百上千個(gè)處理節(jié)點(diǎn)之上,然后將結(jié)果聚集到一個(gè)小數(shù)據(jù)集當(dāng)中,從而更容易分析得出最后的結(jié)果。MapReduce結(jié)構(gòu)圖Hadoop可以運(yùn)行在低本錢(qián)的硬件產(chǎn)品之上,通過(guò)擴(kuò)展可以成為商業(yè)存儲(chǔ)和數(shù)據(jù)分析的替代方案。它已經(jīng)成為很多互聯(lián)網(wǎng)巨頭,比方AOL、eHarmony〔美國(guó)在線約會(huì)網(wǎng)站〕、易趣、Facebook、Twitter和Netflix大數(shù)據(jù)分析的主要解決方案。也有更多傳統(tǒng)的巨頭公司比方摩根大通銀行,也正在考慮采用這一解決方案。3.惠普Vertica電子商務(wù)分析今年二月被惠普收購(gòu)的Vertica,是能提供高效數(shù)據(jù)存儲(chǔ)和快速查詢的列存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)時(shí)分析平臺(tái)。相比傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù),更低的維護(hù)和運(yùn)營(yíng)本錢(qián),就可以獲得更快速的部署、運(yùn)行和維護(hù)。該數(shù)據(jù)庫(kù)還支持大規(guī)模并行處理〔MPP〕。在收購(gòu)之后,惠普隨即推出了基于x86硬件的HPVertica。通過(guò)MPP的擴(kuò)展性可以讓Vertica為高端數(shù)字營(yíng)銷(xiāo)、電子商務(wù)客戶〔比方AOL、Twitter、Groupon〕分析處理的數(shù)據(jù)到達(dá)PB級(jí)?;萜誚ertica實(shí)時(shí)分析平臺(tái)其實(shí),早在惠普收購(gòu)之前,Vertica就推出有包括內(nèi)存、閃存快速分析等一系列創(chuàng)新產(chǎn)品。它是首個(gè)新增Hadoop鏈接支持客戶管理關(guān)系型數(shù)據(jù)的產(chǎn)品之一,也是首個(gè)基于云部署風(fēng)險(xiǎn)的產(chǎn)品平臺(tái)之一。目前,Vertica支持惠普的云效勞自動(dòng)化解決方案。4.IBM提供運(yùn)維和分析數(shù)據(jù)倉(cāng)庫(kù)去年,IBM推出了基于DB2的SmartAnalyticSystem〔圖中左側(cè)〕,那么它為何還要收購(gòu)另外的Netezza方案平臺(tái)呢?因?yàn)榍罢呤蔷邆涓邤U(kuò)展性企業(yè)數(shù)據(jù)倉(cāng)庫(kù)的平臺(tái),可以支持成千上萬(wàn)的用戶和各類(lèi)應(yīng)用操作。比方,呼叫中心通常擁有大量的雇員需要快速回?fù)芸蛻舻臍v史通話記錄。SmartAnalyticSystem提供了整合信息的DB2數(shù)據(jù)庫(kù),預(yù)配置CognosBI軟件模塊,可以在IBMPowerSystem〔RISC或者X86架構(gòu)〕上運(yùn)行。SmartAnalyticSystem及NetezzaNetezza致力于為數(shù)字化營(yíng)銷(xiāo)公司、電信、和其他挖掘成百上千TB甚至PB級(jí)別數(shù)據(jù)的公司,提供高可擴(kuò)展分析應(yīng)用的解決方案。IBM的NetezzaTwinFin數(shù)據(jù)倉(cāng)庫(kù)設(shè)備,支持大規(guī)模并行處理,可以在一天時(shí)間內(nèi)部署完畢。Netezza支持多種語(yǔ)言和方式進(jìn)行數(shù)據(jù)庫(kù)分析,其中包括Java、C、C++、Python和MapReduce。與此同時(shí),它還支持如SAS,IBMSPSS使用的矩陣操作方法和R編程語(yǔ)言。IBMNetezza最近增加了一個(gè)高容量長(zhǎng)期存檔設(shè)備以滿足更多要求。5.Infobright減少DBA工作量和查詢時(shí)間Infobright列存儲(chǔ)數(shù)據(jù)庫(kù),旨在為數(shù)十TB級(jí)別數(shù)據(jù)提供各類(lèi)分析效勞。而這一塊也正是甲骨文和微軟SQLServer的核心市場(chǎng)之一。InfoBright還表示,建立在MySQL根底之上的數(shù)據(jù)庫(kù)也提供了另外一種選擇,它專(zhuān)門(mén)針對(duì)分析應(yīng)用、低本錢(qián)簡(jiǎn)化勞動(dòng)力工作、交付高性能的效勞進(jìn)行設(shè)計(jì)。列存儲(chǔ)數(shù)據(jù)庫(kù)能夠自動(dòng)創(chuàng)立索引,而且無(wú)需進(jìn)行數(shù)據(jù)分區(qū)和DBA調(diào)整。相比傳統(tǒng)數(shù)據(jù)庫(kù),它可以減少90%的人工工作量,而且由于其采用高數(shù)據(jù)壓縮,在數(shù)據(jù)庫(kù)許可和存儲(chǔ)等方面的開(kāi)支也可以減少一半。KnowledgeGrid查詢引擎InfoBright最新的4.0版本產(chǎn)品,新增了一個(gè)DomainExpert的功能。企業(yè)用戶可以借此忽略不斷重復(fù)的那些數(shù)據(jù),比方郵箱地址、URL和IP地址。與此同時(shí),公司還可以增加與呼叫記錄、業(yè)務(wù)交易或者地理位置信息相關(guān)的數(shù)據(jù)。KowledgeGrid查詢引擎那么可以幫助過(guò)濾那些靜態(tài)數(shù)據(jù)而只關(guān)注那些變化的數(shù)據(jù)。也就是說(shuō),它可以幫助節(jié)省數(shù)據(jù)查詢的時(shí)間,因?yàn)槟切o(wú)關(guān)的數(shù)據(jù)無(wú)需進(jìn)行解壓縮和篩選。6.Kognitio提供三倍速度和虛擬多維數(shù)據(jù)集Kognitio是一家本身不生產(chǎn)硬件產(chǎn)品的數(shù)據(jù)庫(kù)廠商,它看到了客戶對(duì)快速部署的廣泛興趣和市場(chǎng)需求,推出了在惠普、IBM硬件產(chǎn)品上預(yù)配置有WX2數(shù)據(jù)庫(kù)的Lakes、Rivers和Rapids解決方案。Lakes能夠以低本錢(qián)、10TB數(shù)據(jù)存儲(chǔ)和每個(gè)模塊48個(gè)運(yùn)算核心提供大容量存儲(chǔ)效勞。電信或金融效勞公司,可以使用這種配置來(lái)掃描大量的分支結(jié)構(gòu)的各種信息記錄。Rivers那么提供了容量和速度之間的平衡,預(yù)配置為2.5TB存儲(chǔ)容量,它的每個(gè)模塊擁有48個(gè)運(yùn)算核心。而追求查詢性能的Rapids,其預(yù)配置提供有96個(gè)運(yùn)算核心,每個(gè)模塊僅僅為1.5TB。該產(chǎn)品方案主要針對(duì)金融公司在算法交易或者其他高性能要求方面的需求。Kognitio基于內(nèi)存運(yùn)算的數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)分析今年,Kognitio新增了一個(gè)虛擬化OLAP風(fēng)格的Pablo分析引擎。它提供了靈活的、為企業(yè)用戶進(jìn)行分析的解決方案。用戶可升級(jí)選用WX2構(gòu)建一個(gè)虛擬多維數(shù)據(jù)集。因此,WX2數(shù)據(jù)庫(kù)中任何一個(gè)維度的數(shù)據(jù)都可在內(nèi)存中用于快速分析。這種分析的前端接口是我們常見(jiàn)的MicrosoftExcel。7.微軟SQLServer新增PDW功能今年年初微軟發(fā)布的SQLServerR2ParallelDataWarehouse〔PDW,并行數(shù)據(jù)倉(cāng)庫(kù)〕,一改以往SQLServer部署時(shí)間需要花費(fèi)兩年半時(shí)間的歷史,它可以幫助客戶擴(kuò)展部署數(shù)百TB級(jí)別數(shù)據(jù)的分析解決方案。支持這一產(chǎn)品的包括有合作伙伴惠普的硬件平臺(tái)。發(fā)布之初,雖然微軟官網(wǎng)提供有讓利折扣,但PDW售價(jià)仍超過(guò)13000美元/TB〔用戶和硬件訪問(wèn)量〕。SQLServerPDW和很多產(chǎn)品一樣,PDW使用了大規(guī)模并行處理來(lái)支持高擴(kuò)展性,但微軟進(jìn)入這一市場(chǎng)實(shí)屬“姍姍來(lái)遲〞,而且在一定程度上說(shuō),數(shù)據(jù)倉(cāng)庫(kù)分析和內(nèi)存分析計(jì)算市場(chǎng)落下了后腿。目前,微軟寄希望于其整體數(shù)據(jù)庫(kù)平臺(tái)在市場(chǎng)上帶來(lái)的差異化競(jìng)爭(zhēng)力。這意味著,所有沿襲了基于微軟平臺(tái)的數(shù)據(jù)和數(shù)據(jù)管理,將被廣泛應(yīng)用在信息集成領(lǐng)域——ReportingandAnalysisServices,而這一切都基于SQLServer數(shù)據(jù)庫(kù)。微軟在今年10月12日通過(guò)推出ApacheHadoop和相關(guān)的SQLAzureHadoop效勞,宣布進(jìn)入大數(shù)據(jù)領(lǐng)域。Azure效勞將在2023年底亮相,而相應(yīng)的本地配套軟件要在明年上半年推出,現(xiàn)在也不清楚微軟是否會(huì)與其他硬件合作伙伴或者相關(guān)大數(shù)據(jù)設(shè)備廠商合作。8.甲骨文講述EngineeredSystems的故事甲骨文表示,Exadata〔圖中左側(cè)〕是迄今以來(lái)發(fā)布的產(chǎn)品中最為成功的產(chǎn)品,自從2023年推出以來(lái),已經(jīng)擁有超過(guò)1000名客戶。而engineeredsystem使得甲骨文11g數(shù)據(jù)庫(kù),可以支持基于X86的數(shù)據(jù)處理和磁盤(pán)存儲(chǔ)層,其閃存緩存也使得可以實(shí)現(xiàn)超快速查詢處理。它既可應(yīng)用在任意事務(wù)環(huán)境中,也可以應(yīng)用在數(shù)據(jù)倉(cāng)庫(kù)〔但不能同時(shí)進(jìn)行〕。Exadata的混合柱狀壓縮能夠?qū)崿F(xiàn)列存儲(chǔ)數(shù)據(jù)庫(kù)的某些高效率特點(diǎn),提供高達(dá)10:1的壓縮比,而大局部行存儲(chǔ)數(shù)據(jù)庫(kù)的平均壓縮比為4:1。甲骨文在9月通過(guò)宣布OracleSuperCluster〔圖中右側(cè)〕,擴(kuò)展了engineeredsystems產(chǎn)品家族。它采用了最新的SunSparcT-4芯片。SuperCluster支持全機(jī)架/半機(jī)架配置,而且用戶可以在半機(jī)架容量根底上進(jìn)行擴(kuò)容。滿額配置提供有1200個(gè)CPU線程,4TB內(nèi)存,97TB至198TB磁盤(pán)存儲(chǔ),8.66TB閃存。甲骨文大數(shù)據(jù)分析系統(tǒng)設(shè)施甲骨文聲稱(chēng),SuperCluster事務(wù)處理和數(shù)據(jù)倉(cāng)庫(kù)性能相比傳統(tǒng)效勞器架構(gòu)能分別帶來(lái)10倍和50倍速度提升。但作為一個(gè)專(zhuān)有的Unix機(jī)器,甲骨文想通過(guò)SuperCluster,在面向x86硬件的數(shù)據(jù)倉(cāng)庫(kù)部署遷移大潮中力挽狂瀾。甲骨文的Exadata和Exalogic都基于x86架構(gòu)而且運(yùn)行Linux系統(tǒng)。在十月召開(kāi)的OracleOpenWorld中,甲骨文宣布將新增一個(gè)分布式pacheHadoop軟件和相關(guān)的大數(shù)據(jù)設(shè)備。甲骨文也方案推出一個(gè)獨(dú)立的基于開(kāi)源BerkeleyDB產(chǎn)品的NoSQL。9.ParAccel大打列存儲(chǔ)、MPP和數(shù)據(jù)庫(kù)分析組合拳ParAccel是ParAccelAnalyticDatabase〔PADB〕的開(kāi)發(fā)廠商——提供快速、選擇性查詢和列存儲(chǔ)數(shù)據(jù)庫(kù),并基于大規(guī)模并行處理優(yōu)勢(shì)特點(diǎn)的產(chǎn)品。該公式表示,其平臺(tái)支持一系列針對(duì)各種復(fù)雜、先進(jìn)應(yīng)用的工作負(fù)載報(bào)告和分析。ParAccel大數(shù)據(jù)解決方案內(nèi)置的分析算法可以為分析師提供高級(jí)數(shù)學(xué)運(yùn)算、數(shù)據(jù)統(tǒng)計(jì)、和數(shù)據(jù)挖掘等各種功能,同時(shí),它還提供一個(gè)開(kāi)放的API,可以擴(kuò)展數(shù)據(jù)庫(kù)的各種數(shù)據(jù)處理能力和第三方分析應(yīng)用。Tablefunctions被用來(lái)傳送和接收第三方和采用C、C++等編寫(xiě)的定制算法的數(shù)據(jù)結(jié)果。ParAccel與FuzzyLogix——一家提供各種描述統(tǒng)計(jì)學(xué)、統(tǒng)計(jì)實(shí)驗(yàn)?zāi)M和模式識(shí)別功能庫(kù)功能的效勞商。此外,Tablefunctions還支持MapReduce和廣泛應(yīng)用在金融效勞的700多種分析技術(shù)。10.Sybase推進(jìn)IQ列存儲(chǔ)數(shù)據(jù)庫(kù)SAP旗下的Sybase是列存儲(chǔ)數(shù)據(jù)庫(kù)管理系統(tǒng)的首批廠商,而且目前仍然是擁有2000多個(gè)客戶的暢銷(xiāo)廠商。今年夏天推出了SybaseIQ15.3版本,該版本產(chǎn)品能夠處理更多數(shù)據(jù)和更多數(shù)據(jù)類(lèi)型,也能勝任更多查詢,當(dāng)然這主要得益于其包含了一個(gè)名叫PlexQ的大規(guī)模并行處理功能。基于MPP大規(guī)模并行處理的PlexQ分布式查詢平臺(tái),通過(guò)將任務(wù)分散到網(wǎng)格配置中的多臺(tái)計(jì)算機(jī),加速了高度復(fù)雜的查詢。有報(bào)道說(shuō),它能提供比現(xiàn)有的IQ部署快12倍的交付能力。SybaseIQ為了支持不同的分析,15.3版本的產(chǎn)品增加了分布式處理功能,來(lái)執(zhí)行PlexQ網(wǎng)格中跨CPU的查詢效勞。為了確保實(shí)現(xiàn)最快速度的查詢,PlexQ包含了一個(gè)邏輯效勞器——讓管理員對(duì)PlexQ網(wǎng)格的物理效勞器組成虛擬群集,以便優(yōu)化分析工作負(fù)載、用戶需求和應(yīng)用程序。SybaseIQ和其他大多數(shù)的支持MPP功能的產(chǎn)品之間區(qū)別主要在于,它采用了全共享的方式。全共享的缺點(diǎn)是CPU會(huì)爭(zhēng)相訪問(wèn)共享存儲(chǔ)〔通常是SAN〕,而這會(huì)降低查詢性能。不過(guò)Sybase堅(jiān)持認(rèn)為,從優(yōu)化查詢的角度來(lái)說(shuō)全共享會(huì)更加靈活,因?yàn)樗械腃PU都會(huì)訪問(wèn)所有的數(shù)據(jù)。所以,我們可以對(duì)某個(gè)特定的查詢盡可能多〔或者少〕地分配計(jì)算資源。11.Teradata從EDWs跨入大規(guī)模分析領(lǐng)域一旦成為企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)〔EDW〕的宣傳者,近年來(lái)Teradata就已經(jīng)放松了擴(kuò)展Teradata數(shù)據(jù)庫(kù)產(chǎn)品家族的步伐。該公司的高性能、高容量產(chǎn)品被廣泛采用和復(fù)制,因?yàn)槠渲邪撕芏嗥髽I(yè)工作量管理的功能模塊,包括虛擬OLAP〔三維立體式〕分析模型。Teradata在數(shù)據(jù)庫(kù)分析領(lǐng)域不斷推陳出新,但在結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和大局部非結(jié)構(gòu)化數(shù)據(jù)領(lǐng)域幾乎沒(méi)有很大成果。這也就是為什么該公司要收購(gòu)AsterData——一家提供SQL-MapReduce框架的公司。MapReduce處理?yè)碛袕V泛的市場(chǎng)需求,因?yàn)榇嬖谥罅康幕ヂ?lián)網(wǎng)點(diǎn)擊數(shù)據(jù)、傳感數(shù)據(jù)和社交媒體內(nèi)容。Teradata平臺(tái)產(chǎn)品家族Teradata日前宣布了一項(xiàng)AsterDataMapReduce產(chǎn)品的方案,它建立在以往產(chǎn)品同樣的硬件平臺(tái)之上,而且在Teradata和AsterData之間新增了兩種集成方法。通過(guò)收購(gòu),Teradata打破了在數(shù)據(jù)倉(cāng)儲(chǔ)業(yè)被認(rèn)為最廣泛、最具擴(kuò)展性的界限。12.1010data提供基于云計(jì)算大數(shù)據(jù)分析正如標(biāo)題所說(shuō),1010data能夠提供基于云計(jì)算的大數(shù)據(jù)分析平臺(tái)。很大數(shù)據(jù)庫(kù)平臺(tái)供給商提供基于云的沙箱測(cè)試和開(kāi)發(fā)環(huán)境,但1010data的管理數(shù)據(jù)庫(kù)效勞,主要針對(duì)將整個(gè)工作負(fù)載遷移到云的全過(guò)程。該效勞支持一種提供“豐富而又高級(jí)的內(nèi)置分析功能〞,其中包括有預(yù)測(cè)分析。其一大賣(mài)點(diǎn)是效勞包括了數(shù)據(jù)建模和設(shè)計(jì)、信息集成和數(shù)據(jù)轉(zhuǎn)換。1010data提供基于云計(jì)算大數(shù)據(jù)分析其客戶包括有對(duì)沖基金、全球各大銀行、證券交易商,零售商和包裝消費(fèi)品公司。何謂大數(shù)據(jù)?大數(shù)據(jù),也就是國(guó)外常說(shuō)的BigData。IBM把大數(shù)據(jù)概括成了三個(gè)V,即大量化〔Volume〕、多樣化〔Variety〕和快速化〔Velocity〕。這些特點(diǎn)也反映了大數(shù)據(jù)所潛藏的價(jià)值〔Value〕,我們也可以認(rèn)為,四個(gè)V高度概括了大數(shù)據(jù)的根本特征。業(yè)界比擬一致對(duì)大數(shù)據(jù)的定義是:大數(shù)據(jù)是指無(wú)法在一定時(shí)間內(nèi)用常規(guī)軟件工具對(duì)其內(nèi)容進(jìn)行抓取、管理和處理的數(shù)據(jù)集合。大數(shù)據(jù)時(shí)代分析技術(shù)如何進(jìn)化2023-06-1907:30比特網(wǎng)袁斌關(guān)鍵字:FICO大數(shù)據(jù)費(fèi)埃哲當(dāng)你在應(yīng)用信用卡進(jìn)行交易時(shí),你可能沒(méi)有意識(shí)到,這筆交易是否成功,是由費(fèi)埃哲(FICO)公司的產(chǎn)品在后臺(tái)進(jìn)行智能判斷和監(jiān)測(cè)的。目前,費(fèi)埃哲公司的Falcon解決方案在幫助客戶監(jiān)控全球2/3的信用卡交易,并從中區(qū)分欺詐活動(dòng)。顯然,這是一個(gè)非常典型的大數(shù)據(jù)應(yīng)用——銀行每天的信用卡交易數(shù)都是一個(gè)天文數(shù)字,如何有效處理和鑒別這些數(shù)據(jù),幫助企業(yè)做出正確的決策?在非結(jié)構(gòu)化數(shù)據(jù)洶涌增加的今天,費(fèi)埃哲公司又是如何判斷大數(shù)據(jù)時(shí)代的分析技術(shù)進(jìn)展?日前,比特網(wǎng)記者采訪了費(fèi)埃哲(FICO)公司首席執(zhí)行官WillLansing先生。費(fèi)埃哲〔FICO〕公司首席執(zhí)行官WillLansing先生問(wèn):大數(shù)據(jù)對(duì)軟件和硬件都有非常強(qiáng)的挑戰(zhàn),所以現(xiàn)在業(yè)界有一種趨勢(shì),要做軟硬件結(jié)合,以更緊密的一體機(jī)形式來(lái)提供分析效勞。最典型的產(chǎn)品,例如甲骨文公司的Exalytics系統(tǒng)。那么,您是如何看待這一趨勢(shì)?費(fèi)埃哲公司會(huì)如何更好地與硬件進(jìn)行優(yōu)化整合?答:這是一個(gè)非常好的問(wèn)題。就費(fèi)埃哲公司而言,根底架構(gòu)并不是我們的專(zhuān)長(zhǎng),所以我們要和我們的客戶去合作。目前,我們有一些合作方式是基于SaaS的,也有一些是基于其它各類(lèi)解決方案的。費(fèi)埃哲公司并不強(qiáng)制客戶使用某種特定的根底架構(gòu)來(lái)運(yùn)行我們的應(yīng)用、捕捉應(yīng)用數(shù)據(jù),而是在客戶現(xiàn)有的根底架構(gòu)運(yùn)營(yíng)優(yōu)化、進(jìn)行合作。實(shí)際上,費(fèi)埃哲公司也在和一些實(shí)驗(yàn)室合作,例如Cloudera,借此來(lái)拓展我們的能力,消除我們(對(duì)硬件根底設(shè)施在理解上)的局限性。問(wèn):在大數(shù)據(jù)的分析方面,數(shù)學(xué)模型非常重要。我們知道,費(fèi)埃哲公司在金融領(lǐng)域有很深的積累。那么,這種積累如何推廣到其他行業(yè)?答:費(fèi)埃哲公司在垂直行業(yè)已經(jīng)有很長(zhǎng)時(shí)間的積累了,這也是我們能夠?qū)I(yè)務(wù)拓展到非金融行業(yè)的一大原因。我們公司非常擅長(zhǎng)分析一些復(fù)雜、困難的問(wèn)題,這些分析技巧不僅適用于金融行業(yè),也適用于其他多個(gè)行業(yè)。例如,我們對(duì)于客戶行為的了解,就不局限于金融行業(yè),還包括保險(xiǎn)行業(yè)和零售行業(yè)。在保險(xiǎn)行業(yè)當(dāng)中,某些欺詐的行為和在銀行業(yè)當(dāng)中的信用卡欺詐的用戶行為是非常類(lèi)似的。而在營(yíng)銷(xiāo)解決方案方面,很多零售行業(yè)的客戶行為和銀行客戶的行為也非常近似。所以,我們?cè)诮鹑谛袠I(yè)的客戶管理經(jīng)驗(yàn),也可以應(yīng)用到零售行業(yè)。以費(fèi)埃哲公司在中國(guó)的業(yè)務(wù)開(kāi)展為例,銀行業(yè)務(wù)是最傳統(tǒng)的領(lǐng)域。但從一年前開(kāi)始,費(fèi)埃哲就開(kāi)始把我們成熟的技術(shù)推向保險(xiǎn)領(lǐng)域,協(xié)助保險(xiǎn)公司做理賠的反欺詐。盡管保險(xiǎn)行業(yè)的業(yè)務(wù)特點(diǎn)跟銀行不太一樣,但我們的技術(shù)是同樣適用的,而且我們?cè)趪?guó)外的保險(xiǎn)行業(yè)也有所積累。因此,費(fèi)埃哲在國(guó)內(nèi)的保險(xiǎn)理賠反欺詐的案例就非常成功——客戶回訪時(shí),他們表示,現(xiàn)在能夠通過(guò)數(shù)據(jù)分析,實(shí)時(shí)抓住大批量的理賠欺詐。問(wèn):我們也注意到,您提到了信用卡反欺詐這個(gè)大數(shù)據(jù)應(yīng)用。但相對(duì)而言,這都是針對(duì)結(jié)構(gòu)化數(shù)據(jù)的,針對(duì)郵件、文本這些非結(jié)構(gòu)化的數(shù)據(jù),費(fèi)埃哲公司將采用哪些解決方案去處理?答:大數(shù)據(jù)的定義當(dāng)中,包括3個(gè)V(高容量、高速度、多類(lèi)型)。雖然費(fèi)埃哲的信用卡反欺詐解決方案只是針對(duì)結(jié)構(gòu)化數(shù)據(jù),但我們已經(jīng)能夠處理大容量數(shù)據(jù)和高速的數(shù)據(jù)。到目前為止,我們還是采用相對(duì)傳統(tǒng)的方式,將數(shù)據(jù)簡(jiǎn)化到一個(gè)智能的、可操作的層面,然后基于這些數(shù)據(jù)來(lái)做出快速?zèng)Q策。盡管我們現(xiàn)在只能做到這三個(gè)V當(dāng)中的兩個(gè),但我們非常接近完美地來(lái)解決這個(gè)問(wèn)題的。隨著根底架構(gòu)不斷的完善和演進(jìn),費(fèi)埃哲的解決方案也會(huì)發(fā)生變化。問(wèn):在數(shù)據(jù)爆發(fā)的時(shí)代,我們進(jìn)行數(shù)據(jù)分析的方式需要改變嗎?答:我們關(guān)于大數(shù)據(jù)的絕大多數(shù)討論都集中在數(shù)據(jù)的規(guī)模,并沒(méi)有相應(yīng)關(guān)注在數(shù)據(jù)分析方式的改變?!皵?shù)據(jù)流〞的分析對(duì)于FICO并不陌生,其中最好的應(yīng)用莫過(guò)于我們的反欺詐解決方案——FICOFalconFraudManager。Falcon模型依靠交易特征,它概括了數(shù)據(jù)在交易過(guò)程中的特征,以便計(jì)算相關(guān)的欺詐特點(diǎn)的變量,而不依賴由此生成的既有數(shù)據(jù)。我們?cè)跀?shù)據(jù)流特征分析領(lǐng)域不斷推動(dòng)創(chuàng)新,尤其在反欺詐領(lǐng)域。這些創(chuàng)新技術(shù)包括:全球智能特征識(shí)別技術(shù)。它可以自動(dòng)發(fā)現(xiàn)銀行卡交易、ATM和商戶交易中的不正常行為。再比方FICO公司開(kāi)發(fā)的自我校正分析技術(shù),它可以隨著客戶行為模式的改變,效勞渠道的改變而改善偵測(cè)的準(zhǔn)確性。另一個(gè)由大數(shù)據(jù)帶來(lái)的變化是分析必須減少對(duì)于固有數(shù)據(jù)的依賴。分析模型將能夠根據(jù)數(shù)據(jù)流中的動(dòng)態(tài)數(shù)據(jù)自我調(diào)整。為了應(yīng)對(duì)不斷增加的數(shù)據(jù)流中的動(dòng)態(tài)數(shù)據(jù),我們集中研發(fā)了自我學(xué)習(xí)的一些技術(shù),包括:自適應(yīng)分析和自我矯正分析技術(shù)。我們堅(jiān)信這些關(guān)鍵技術(shù)將彌補(bǔ)傳統(tǒng)方式的缺乏。自學(xué)習(xí)技術(shù)甚至將可能在某些領(lǐng)域取代傳統(tǒng)的模式。最近,我們?cè)谧约洪_(kāi)發(fā)的自我校正分析技術(shù)上取得了重大進(jìn)展。已申請(qǐng)專(zhuān)利的“多層自我校正分析技術(shù)〞的體系結(jié)構(gòu)與神經(jīng)網(wǎng)絡(luò)模式類(lèi)似,但與之不同的是新模式可以在數(shù)據(jù)流中自我校正。使用多層自我校正模式將需要更少的數(shù)據(jù)采樣,并且可以直接與自適應(yīng)分析技術(shù)聯(lián)合使用,可以更為動(dòng)態(tài)地發(fā)現(xiàn)欺詐。將“多層自我校對(duì)系統(tǒng)〞與目前通用的技術(shù)相比,我們預(yù)見(jiàn)未來(lái)的分析技術(shù)將大幅提高。問(wèn):更進(jìn)一步地說(shuō),現(xiàn)在的大數(shù)據(jù)分析,都是數(shù)據(jù)進(jìn)行篩選、過(guò)濾到數(shù)據(jù)倉(cāng)庫(kù)當(dāng)中,然后進(jìn)行分析。隨著硬件設(shè)備在性能和容量上不斷提升,還有必要對(duì)傳統(tǒng)分析技術(shù)進(jìn)行大規(guī)模改良嗎?答:今天的大數(shù)據(jù)分析情況確實(shí)如你所說(shuō)的這樣。但我相信,在不遠(yuǎn)的將來(lái),我們會(huì)需要直接對(duì)大數(shù)據(jù)進(jìn)行分析。這種分析可能有兩種方式:一種是隨著數(shù)據(jù)集的不斷增加,我們需要重新建?!跀?shù)據(jù)集不斷增加的情況下,可能需要考慮應(yīng)用Hadoop技術(shù)進(jìn)行存儲(chǔ),否那么我們就沒(méi)有容量足夠大的存儲(chǔ)空間;另一種方式那么是采用基于機(jī)器學(xué)習(xí)的方法,來(lái)進(jìn)行大數(shù)據(jù)的處理和分析。至于硬件的性能,也許現(xiàn)在還不是問(wèn)題,但當(dāng)我們考慮所有數(shù)據(jù),并從中找出最有價(jià)值的地方時(shí),用現(xiàn)有的根底架構(gòu)就會(huì)顯得遠(yuǎn)遠(yuǎn)不夠。例如,今天的銀行客戶,他們已經(jīng)知道,未來(lái)他們的數(shù)據(jù)是分散的、遍布各地的,可能在銀行內(nèi)部,可能在局域網(wǎng)或者在云里面,他們希望這些數(shù)據(jù)都能夠被讀取,都對(duì)數(shù)據(jù)進(jìn)行分析。顯然,這是今天的架構(gòu)無(wú)法完成的,這需要將來(lái)才可以實(shí)現(xiàn)。問(wèn):那么,您認(rèn)為機(jī)器學(xué)習(xí)和傳統(tǒng)模型這兩種數(shù)據(jù)分析方式,哪種更有開(kāi)展前途?答:大數(shù)據(jù)的最終目標(biāo)就是利用各種數(shù)據(jù)來(lái)做出最好的決策。大數(shù)據(jù)最美的地方,就是我們不再受數(shù)據(jù)容量的局限,它可以不斷的增加一些變量,然后增加價(jià)值,幫助我們做出更好的決策。如你所提到的,現(xiàn)在我們有兩種模型,一種是基于假設(shè)的模型,例如前幾年麥肯錫提出來(lái)的假設(shè)模型,說(shuō)我們要關(guān)注哪些高價(jià)值數(shù)據(jù),關(guān)注相關(guān)領(lǐng)域的數(shù)據(jù),關(guān)注那些能夠提升效率的數(shù)據(jù)。另一種模型就是一種不是基于假設(shè)的模型,確切地說(shuō),是一種機(jī)器學(xué)習(xí)的模型。這種模型跟假設(shè)模型完全不同。我并不認(rèn)為這兩種模型可以相互替代。從長(zhǎng)期來(lái)看,一定會(huì)有更多的數(shù)據(jù)需要我們?nèi)リP(guān)注。對(duì)大數(shù)據(jù)來(lái)說(shuō),它能夠不斷的增加變量,幫助我們基于這些數(shù)據(jù)做出更好的決策,這是它特別有優(yōu)勢(shì)的一個(gè)地方。我個(gè)人認(rèn)為,在比擬長(zhǎng)的一段時(shí)間之后,機(jī)器學(xué)習(xí)的這種方式,有可能會(huì)取代假設(shè)的這種模型。問(wèn):在金融領(lǐng)域的機(jī)器學(xué)習(xí)應(yīng)該具有什么特性?答:以小額貸款的機(jī)器學(xué)習(xí)為例,這需要非??焖儆^察和衡量,能夠迅速發(fā)現(xiàn)壞帳,這樣才能夠快速學(xué)習(xí)、調(diào)整。盡管目前也有一些公司推出了所謂的機(jī)器學(xué)習(xí),但這是非常有局限性的,主要是用于展示,展示出新科技所帶來(lái)的可能性,并告訴客戶這個(gè)新科技可以不斷完善,并且最終能夠降低風(fēng)險(xiǎn)。技術(shù)根底:大數(shù)據(jù)分析技術(shù)的開(kāi)展ZDNet存儲(chǔ)系統(tǒng)來(lái)源:賽迪網(wǎng)2023年05月16日評(píng)論(0)關(guān)鍵詞:大數(shù)據(jù)MapReduceGoogle本文摘要大數(shù)據(jù)分析技術(shù)最初起源于互聯(lián)網(wǎng)行業(yè)。網(wǎng)頁(yè)存檔、用戶點(diǎn)擊、商品信息、用戶關(guān)系等數(shù)據(jù)形成了持續(xù)增長(zhǎng)的海量數(shù)據(jù)集。這些大數(shù)據(jù)中蘊(yùn)藏著大量可以用于增強(qiáng)用戶體驗(yàn)、提高效勞質(zhì)量和開(kāi)發(fā)新型應(yīng)用的知識(shí),而如何高效和準(zhǔn)確的發(fā)現(xiàn)這些知識(shí)就根本決定了各大互聯(lián)網(wǎng)公司在劇烈競(jìng)爭(zhēng)環(huán)境中的位置。首先,以Google為首的技術(shù)型互聯(lián)網(wǎng)公司提出了MapReduce的技術(shù)框架,利用廉價(jià)的PC效勞器集群,大規(guī)模并發(fā)處理批量事務(wù)。大數(shù)據(jù)分析技術(shù)最初起源于互聯(lián)網(wǎng)行業(yè)。網(wǎng)頁(yè)存檔、用戶點(diǎn)擊、商品信息、用戶關(guān)系等數(shù)據(jù)形成了持續(xù)增長(zhǎng)的海量數(shù)據(jù)集。這些大數(shù)據(jù)中蘊(yùn)藏著大量可以用于增強(qiáng)用戶體驗(yàn)、提高效勞質(zhì)量和開(kāi)發(fā)新型應(yīng)用的知識(shí),而如何高效和準(zhǔn)確的發(fā)現(xiàn)這些知識(shí)就根本決定了各大互聯(lián)網(wǎng)公司在劇烈競(jìng)爭(zhēng)環(huán)境中的位置。首先,以Google為首的技術(shù)型互聯(lián)網(wǎng)公司提出了MapReduce的技術(shù)框架,利用廉價(jià)的PC效勞器集群,大規(guī)模并發(fā)處理批量事務(wù)。利用文件系統(tǒng)存放非結(jié)構(gòu)化數(shù)據(jù),加上完善的備份和容災(zāi)策略,這套經(jīng)濟(jì)實(shí)惠的大數(shù)據(jù)解決方案與之前昂貴的企業(yè)小型機(jī)集群+商業(yè)數(shù)據(jù)庫(kù)方案相比,不僅沒(méi)有喪失性能,而且還贏在了可擴(kuò)展性上。之前,我們?cè)谠O(shè)計(jì)一個(gè)數(shù)據(jù)中心解決方案的前期,就要考慮到方案實(shí)施后的可擴(kuò)展性。通常的方法是預(yù)估今后一段時(shí)期內(nèi)的業(yè)務(wù)量和數(shù)據(jù)量,參加多余的計(jì)算單元〔CPU〕和存儲(chǔ),以備不時(shí)只需。這樣的方式直接導(dǎo)致了前期一次性投資的巨大,并且即使這樣也依然無(wú)法保證計(jì)算需求和存儲(chǔ)超出設(shè)計(jì)量時(shí)的系統(tǒng)性能。而一旦需要擴(kuò)容,問(wèn)題就會(huì)接踵而來(lái)。首先是商業(yè)并行數(shù)據(jù)庫(kù)通常需要各節(jié)點(diǎn)物理同構(gòu),也就是具有近似的計(jì)算和存儲(chǔ)能力。而隨著硬件的更新,我們通常參加的新硬件都會(huì)強(qiáng)于已有的硬件。這樣,舊硬件就成為了系統(tǒng)的瓶頸。為了保證系統(tǒng)性能,我們不得不把舊硬件逐步替換掉,經(jīng)濟(jì)本錢(qián)損失巨大。其次,即使是當(dāng)前最強(qiáng)的商業(yè)并行數(shù)據(jù)庫(kù),其所能管理的數(shù)據(jù)節(jié)點(diǎn)也只是在幾十或上百這個(gè)數(shù)量級(jí),這主要是由于架構(gòu)上的設(shè)計(jì)問(wèn)題,所以其可擴(kuò)展性必然有限。而MapReduce+GFS框架,不受上述問(wèn)題的困擾。需要擴(kuò)容了,只需增加個(gè)機(jī)柜,參加適當(dāng)?shù)挠?jì)算單元和存儲(chǔ),集群系統(tǒng)會(huì)自動(dòng)分配和調(diào)度這些資源,絲毫不影響現(xiàn)有系統(tǒng)的運(yùn)行。如今,我們用得更多的是GoogleMapReduce的開(kāi)源實(shí)現(xiàn),即Hadoop。除了計(jì)算模型的開(kāi)展,與此同時(shí),人們也在關(guān)注著數(shù)據(jù)存儲(chǔ)模型。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)由于其標(biāo)準(zhǔn)的設(shè)計(jì)、友好的查詢語(yǔ)言、高效的數(shù)據(jù)處理在線事務(wù)的能力,長(zhǎng)時(shí)間地占據(jù)了市場(chǎng)的主導(dǎo)地位。然而,其嚴(yán)格的設(shè)計(jì)定式、為保證強(qiáng)一致性而放棄性能、可擴(kuò)展性差等問(wèn)題在大數(shù)據(jù)分析中被逐漸暴露。隨之而來(lái),NoSQL數(shù)據(jù)存儲(chǔ)模型開(kāi)始風(fēng)行。NoSQL,也有人理解為NotOnlySQL,并不是一種特定的數(shù)據(jù)存儲(chǔ)模型,它是一類(lèi)非關(guān)系型數(shù)據(jù)庫(kù)的統(tǒng)稱(chēng)。其特點(diǎn)是:沒(méi)有固定的數(shù)據(jù)表模式、可以分布式和水平擴(kuò)展。NoSQL并不是單純的反對(duì)關(guān)系型數(shù)據(jù)庫(kù),而是針對(duì)其缺點(diǎn)的一種補(bǔ)充和擴(kuò)展。典型的NoSQL數(shù)據(jù)存儲(chǔ)模型有文檔存儲(chǔ)、鍵-值存儲(chǔ)、圖存儲(chǔ)、對(duì)象數(shù)據(jù)庫(kù)、列存儲(chǔ)等。而比擬流行的,不得不提到Google提出的Bigtable。Bigtable是一種用于管理海量結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng),其數(shù)據(jù)通??梢钥绯汕€(gè)節(jié)點(diǎn)進(jìn)行分布式存儲(chǔ),總數(shù)據(jù)量可達(dá)PB級(jí)〔10的15次方字節(jié),106GB〕。HBase是其開(kāi)源實(shí)現(xiàn)。如今,在開(kāi)源社區(qū),圍繞GoogleMapReduce框架,成長(zhǎng)出了一批優(yōu)秀的開(kāi)源工程。這些工程在技術(shù)和實(shí)現(xiàn)上相互支持和依托,逐漸形成了一個(gè)特有的生態(tài)系統(tǒng)。這里借用Cloudera所描繪的架構(gòu)圖來(lái)展現(xiàn)Hadoop生態(tài)系統(tǒng)。這個(gè)系統(tǒng)為我們實(shí)現(xiàn)優(yōu)質(zhì)廉價(jià)的大數(shù)據(jù)分析提供了堅(jiān)實(shí)的技術(shù)根底。使用Storm實(shí)現(xiàn)實(shí)時(shí)大數(shù)據(jù)分析!實(shí)時(shí)Storm大數(shù)據(jù)摘要:隨著數(shù)據(jù)體積的越來(lái)越大,實(shí)時(shí)處理成為了許多機(jī)構(gòu)需要面對(duì)的首要挑戰(zhàn)。ShruthiKumar和SiddharthPatankar在Dr.Dobb’s上結(jié)合了汽車(chē)超速監(jiān)視,為我們演示了使用Storm進(jìn)行實(shí)時(shí)大數(shù)據(jù)分析。CSDN在此編譯、整理。簡(jiǎn)單和明了,Storm讓大數(shù)據(jù)分析變得輕松加愉快。當(dāng)今世界,公司的日常運(yùn)營(yíng)經(jīng)常會(huì)生成TB級(jí)別的數(shù)據(jù)。數(shù)據(jù)來(lái)源囊括了互聯(lián)網(wǎng)裝置可以捕獲的任何類(lèi)型數(shù)據(jù),網(wǎng)站、社交媒體、交易型商業(yè)數(shù)據(jù)以及其它商業(yè)環(huán)境中創(chuàng)立的數(shù)據(jù)??紤]到數(shù)據(jù)的生成量,實(shí)時(shí)處理成為了許多機(jī)構(gòu)需要面對(duì)的首要挑戰(zhàn)。我們經(jīng)常用的一個(gè)非常有效的開(kāi)源實(shí)時(shí)計(jì)算工具就是Storm——Twitter開(kāi)發(fā),通常被比作“實(shí)時(shí)的Hadoop〞。然而Storm遠(yuǎn)比Hadoop來(lái)的簡(jiǎn)單,因?yàn)橛盟幚泶髷?shù)據(jù)不會(huì)帶來(lái)新老技術(shù)的交替。ShruthiKumar、SiddharthPatankar共同效力于Infosys,分別從事技術(shù)分析和研發(fā)工作。本文詳述了Storm的使用方法,例子中的工程名稱(chēng)為“超速報(bào)警系統(tǒng)〔SpeedingAlertSystem〕〞。我們想實(shí)現(xiàn)的功能是:實(shí)時(shí)分析過(guò)往車(chē)輛的數(shù)據(jù),一旦車(chē)輛數(shù)據(jù)超過(guò)預(yù)設(shè)的臨界值——便觸發(fā)一個(gè)trigger并把相關(guān)的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。Storm比照Hadoop的批處理,Storm是個(gè)實(shí)時(shí)的、分布式以及具備高容錯(cuò)的計(jì)算系統(tǒng)。同Hadoop一樣Storm也可以處理大批量的數(shù)據(jù),然而Storm在保證高可靠性的前提下還可以讓處理進(jìn)行的更加實(shí)時(shí);也就是說(shuō),所有的信息都會(huì)被處理。Storm同樣還具備容錯(cuò)和分布計(jì)算這些特性,這就讓Storm可以擴(kuò)展到不同的機(jī)器上進(jìn)行大批量的數(shù)據(jù)處理。他同樣還有以下的這些特性:易于擴(kuò)展。對(duì)于擴(kuò)展,你只需要添加機(jī)器和改變對(duì)應(yīng)的topology〔拓?fù)洹吃O(shè)置。Storm使用HadoopZookeeper進(jìn)行集群協(xié)調(diào),這樣可以充分的保證大型集群的良好運(yùn)行。每條信息的處理都可以得到保證。Storm集群管理簡(jiǎn)易。Storm的容錯(cuò)機(jī)能:一旦topology遞交,Storm會(huì)一直運(yùn)行它直到topology被廢除或者被關(guān)閉。而在執(zhí)行中出現(xiàn)錯(cuò)誤時(shí),也會(huì)由Storm重新分配任務(wù)。盡管通常使用Java,Storm中的topology可以用任何語(yǔ)言設(shè)計(jì)。當(dāng)然為了更好的理解文章,你首先需要安裝和設(shè)置Storm。需要通過(guò)以下幾個(gè)簡(jiǎn)單的步驟:從Storm官方下載Storm安裝文件將bin/directory解壓到你的PATH上,并保證bin/storm腳本是可執(zhí)行的。Storm組件Storm集群主要由一個(gè)主節(jié)點(diǎn)和一群工作節(jié)點(diǎn)〔workernode〕組成,通過(guò)Zookeeper進(jìn)行協(xié)調(diào)。主節(jié)點(diǎn):主節(jié)點(diǎn)通常運(yùn)行一個(gè)后臺(tái)程序——Nimbus,用于響應(yīng)分布在集群中的節(jié)點(diǎn),分配任務(wù)和監(jiān)測(cè)故障。這個(gè)很類(lèi)似于Hadoop中的JobTracker。工作節(jié)點(diǎn):工作節(jié)點(diǎn)同樣會(huì)運(yùn)行一個(gè)后臺(tái)程序——Supervisor,用于收聽(tīng)工作指派并基于要求運(yùn)行工作進(jìn)程。每個(gè)工作節(jié)點(diǎn)都是topology中一個(gè)子集的實(shí)現(xiàn)。而Nimbus和Supervisor之間的協(xié)調(diào)那么通過(guò)Zookeeper系統(tǒng)或者集群。ZookeeperZookeeper是完成Supervisor和Nimbus之間協(xié)調(diào)的效勞。而應(yīng)用程序?qū)崿F(xiàn)實(shí)時(shí)的邏輯那么被封裝進(jìn)Storm中的“topology〞。topology那么是一組由Spouts〔數(shù)據(jù)源〕和Bolts〔數(shù)據(jù)操作〕通過(guò)StreamGroupings進(jìn)行連接的圖。下面對(duì)出現(xiàn)的術(shù)語(yǔ)進(jìn)行更深刻的解析。Spout:簡(jiǎn)而言之,Spout從來(lái)源處讀取數(shù)據(jù)并放入topology。Spout分成可靠和不可靠?jī)煞N;當(dāng)Storm接收失敗時(shí),可靠的Spout會(huì)對(duì)tuple〔元組,數(shù)據(jù)項(xiàng)組成的列表〕進(jìn)行重發(fā);而不可靠的Spout不會(huì)考慮接收成功與否只發(fā)射一次。而Spout中最主要的方法就是nextTuple〔〕,該方法會(huì)發(fā)射一個(gè)新的tuple到topology,如果沒(méi)有新tuple發(fā)射那么會(huì)簡(jiǎn)單的返回。Bolt:Topology中所有的處理都由Bolt完成。Bolt可以完成任何事,比方:連接的過(guò)濾、聚合、訪問(wèn)文件/數(shù)據(jù)庫(kù)、等等。Bolt從Spout中接收數(shù)據(jù)并進(jìn)行處理,如果遇到復(fù)雜流的處理也可能將tuple發(fā)送給另一個(gè)Bolt進(jìn)行處理。而B(niǎo)olt中最重要的方法是execute〔〕,以新的tuple作為參數(shù)接收。不管是Spout還是Bolt,如果將tuple發(fā)射成多個(gè)流,這些流都可以通過(guò)declareStream〔〕來(lái)聲明。StreamGroupings:StreamGrouping定義了一個(gè)流在Bolt任務(wù)間該如何被切分。這里有Storm提供的6個(gè)StreamGrouping類(lèi)型:1.隨機(jī)分組〔Shufflegrouping〕:隨機(jī)分發(fā)tuple到Bolt的任務(wù),保證每個(gè)任務(wù)獲得相等數(shù)量的tuple。2.字段分組〔Fieldsgrouping〕:根據(jù)指定字段分割數(shù)據(jù)流,并分組。例如,根據(jù)“user-id〞字段,相同“user-id〞的元組總是分發(fā)到同一個(gè)任務(wù),不同“user-id〞的元組可能分發(fā)到不同的任務(wù)。3.全局部組〔Allgrouping〕:tuple被復(fù)制到bolt的所有任務(wù)。這種類(lèi)型需要謹(jǐn)慎使用。4.全局分組〔Globalgrouping〕:全部流都分配到bolt的同一個(gè)任務(wù)。明確地說(shuō),是分配給ID最小的那個(gè)task。5.無(wú)分組〔Nonegrouping〕:你不需要關(guān)心流是如何分組。目前,無(wú)分組等效于隨機(jī)分組。但最終,Storm將把無(wú)分組的Bolts放到Bolts或Spouts訂閱它們的同一線程去執(zhí)行〔如果可能〕。6.直接分組〔Directgrouping〕:這是一個(gè)特別的分組類(lèi)型。元組生產(chǎn)者決定tuple由哪個(gè)元組處理者任務(wù)接收。當(dāng)然還可以實(shí)現(xiàn)CustomStreamGroupimg接口來(lái)定制自己需要的分組。工程實(shí)施當(dāng)下情況我們需要給Spout和Bolt設(shè)計(jì)一種能夠處理大量數(shù)據(jù)〔日志文件〕的topology,當(dāng)一個(gè)特定數(shù)據(jù)值超過(guò)預(yù)設(shè)的臨界值時(shí)促發(fā)警報(bào)。使用Storm的topology,逐行讀入日志文件并且監(jiān)視輸入數(shù)據(jù)。在Storm組件方面,Spout負(fù)責(zé)讀入輸入數(shù)據(jù)。它不僅從現(xiàn)有的文件中讀入數(shù)據(jù),同時(shí)還監(jiān)視著新文件。文件一旦被修改Spout會(huì)讀入新的版本并且覆蓋之前的tuple〔可以被Bolt讀入的格式〕,將tuple發(fā)射給Bolt進(jìn)行臨界分析,這樣就可以發(fā)現(xiàn)所有可能超臨界的記錄。下一節(jié)將對(duì)用例進(jìn)行詳細(xì)介紹。臨界分析這一節(jié),將主要聚焦于臨界值的兩種分析類(lèi)型:瞬間臨界〔instantthershold〕和時(shí)間序列臨界〔timeseriesthreshold〕。瞬間臨界值監(jiān)測(cè):一個(gè)字段的值在那個(gè)瞬間超過(guò)了預(yù)設(shè)的臨界值,如果條件符合的話那么觸發(fā)一個(gè)trigger。舉個(gè)例子當(dāng)車(chē)輛超越80公里每小時(shí),那么觸發(fā)trigger。時(shí)間序列臨界監(jiān)測(cè):字段的值在一個(gè)給定的時(shí)間段內(nèi)超過(guò)了預(yù)設(shè)的臨界值,如果條件符合那么觸發(fā)一個(gè)觸發(fā)器。比方:在5分鐘類(lèi),時(shí)速超過(guò)80KM兩次及以上的車(chē)輛。ListingOne顯示了我們將使用的一個(gè)類(lèi)型日志,其中包含的車(chē)輛數(shù)據(jù)信息有:車(chē)牌號(hào)、車(chē)輛行駛的速度以及數(shù)據(jù)獲取的位置。AB12360NorthcityBC12370SouthcityCD23440SouthcityDE12340East
cityEF12390SouthcityGH12350West
city這里將創(chuàng)立一個(gè)對(duì)應(yīng)的XML文件,這將包含引入數(shù)據(jù)的模式。這個(gè)XML將用于日志文件的解析。XML的設(shè)計(jì)模式和對(duì)應(yīng)的說(shuō)明請(qǐng)見(jiàn)下表。XML文件和日志文件都存放在Spout可以隨時(shí)監(jiān)測(cè)的目錄下,用以關(guān)注文件的實(shí)時(shí)更新。而這個(gè)用例中的topology請(qǐng)見(jiàn)下列圖。Figure1:Storm中建立的topology,用以實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)處理如下圖:FilelistenerSpout接收輸入日志并進(jìn)行逐行的讀入,接著將數(shù)據(jù)發(fā)射給ThresoldCalculatorBolt進(jìn)行更深一步的臨界值處理。一旦處理完成,被計(jì)算行的數(shù)據(jù)將發(fā)送給DBWriterBolt,然后由DBWriterBolt存入給數(shù)據(jù)庫(kù)。下面將對(duì)這個(gè)過(guò)程的實(shí)現(xiàn)進(jìn)行詳細(xì)的解析。Spout的實(shí)現(xiàn)Spout以日志文件和XML描述文件作為接收對(duì)象。XML文件包含了與日志一致的設(shè)計(jì)模式。不妨設(shè)想一下一個(gè)例如日志文件,包含了車(chē)輛的車(chē)牌號(hào)、行駛速度、以及數(shù)據(jù)的捕獲位置?!部聪铝袌D〕Figure2:數(shù)據(jù)從日志文件到Spout的流程圖ListingTwo顯示了tuple對(duì)應(yīng)的XML,其中指定了字段、將日志文件切割成字段的定界符以及字段的類(lèi)型。XML文件以及數(shù)據(jù)都被保存到Spout指定的路徑。ListingTwo:用以描述日志文件的XML文件。<TUPLEINFO><FIELDLIST><FIELD><COLUMNNAME>vehicle_number</COLUMNNAME><COLUMNTYPE>string</COLUMNTYPE></FIELD><FIELD><COLUMNNAME>speed</COLUMNNAME><COLUMNTYPE>int</COLUMNTYPE></FIELD><FIELD><COLUMNNAME>location</COLUMNNAME><COLUMNTYPE>string</COLUMNTYPE></FIELD></FIELDLIST><DELIMITER>,</DELIMITER></TUPLEINFO>通過(guò)構(gòu)造函數(shù)及它的參數(shù)Directory、PathSpout和TupleInfo對(duì)象創(chuàng)立Spout對(duì)象。TupleInfo儲(chǔ)存了日志文件的字段、定界符、字段的類(lèi)型這些很必要的信息。這個(gè)對(duì)象通過(guò)XSTream序列化XML時(shí)建立。Spout的實(shí)現(xiàn)步驟:對(duì)文件的改變進(jìn)行分開(kāi)的監(jiān)聽(tīng),并監(jiān)視目錄下有無(wú)新日志文件添加。在數(shù)據(jù)得到了字段的說(shuō)明后,將其轉(zhuǎn)換成tuple。聲明Spout和Bolt之間的分組,并決定tuple發(fā)送給Bolt的途徑。Spout的具體編碼在ListingThree中顯示。ListingThree:Spout中open、nextTuple和delcareOutputFields方法的邏輯。publicvoid
open(
Map
conf,
TopologyContext
context,SpoutOutputCollector
collector
)
{
_collector
=
collector;
try
{
fileReader
=
new
BufferedReader(new
FileReader(new
File(file)));
}
catch
(FileNotFoundException
e)
{
System.exit(1);
}
}
publicvoid
nextTuple()
{
protectedvoid
ListenFile(File
file)
{
Utils.sleep(2000);
RandomAccessFile
access
=
null;
String
line
=
null;
try
{
while
((line
=
access.readLine())
!=
null)
{
if
(line
!=null)
{
String[]
fields=null;
if
(tupleInfo.getDelimiter().equals("|"))
fields
=
line.split("\\"+tupleInfo.getDelimiter());
else
fields
=
line.split
(tupleInfo.getDelimiter());
if
(tupleInfo.getFieldList().size()
==
fields.length)
_collector.emit(new
Values(fields));
}
}
}
catch
(IOException
ex){
}
}
}
publicvoid
declareOutputFields(OutputFieldsDeclarer
declarer)
{
String[]
fieldsArr
=
new
String
[tupleInfo.getFieldList().size()];
for(int
i=0;
i<tupleInfo.getFieldList().size();
i++)
{
fieldsArr[i]
=
tupleInfo.getFieldList().get(i).getColumnName();
}
declarer.declare(new
Fields(fieldsArr));
}
declareOutputFileds〔〕決定了tuple發(fā)射的格式,這樣的話Bolt就可以用類(lèi)似的方法將tuple譯碼。Spout持續(xù)對(duì)日志文件的數(shù)據(jù)的變更進(jìn)行監(jiān)聽(tīng),一旦有添加Spout就會(huì)進(jìn)行讀入并且發(fā)送給Bolt進(jìn)行處理。Bolt的實(shí)現(xiàn)Spout的輸出結(jié)果將給予Bolt進(jìn)行更深一步的處理。經(jīng)過(guò)對(duì)用例的思考,我們的topology中需要如Figure3中的兩個(gè)Bolt。Figure3:Spout到Bolt的數(shù)據(jù)流程。ThresholdCalculatorBoltSpout將tuple發(fā)出,由ThresholdCalculatorBolt接收并進(jìn)行臨界值處理。在這里,它將接收好幾項(xiàng)輸入進(jìn)行檢查;分別是:臨界值檢查臨界值欄數(shù)檢查〔拆分成字段的數(shù)目〕臨界值數(shù)據(jù)類(lèi)型〔拆分后字段的類(lèi)型〕臨界值出現(xiàn)的頻數(shù)臨界值時(shí)間段檢查L(zhǎng)istingFour中的類(lèi),定義用來(lái)保存這些值。ListingFour:ThresholdInfo類(lèi)public
class
ThresholdInfo
implementsSerializable
{
private
String
action;
private
String
rule;
private
Object
thresholdValue;
private
int
thresholdColNumber;
private
Integer
timeWindow;
private
int
frequencyOfOccurence;
}
基于字段中提供的值,臨界值檢查將被ListingFive中的execute〔〕方法執(zhí)行。代碼大局部的功能是解析和接收值的檢測(cè)。ListingFive:臨界值檢測(cè)代碼段publicvoid
execute(Tuple
tuple,
BasicOutputCollector
collector)
{
if(tuple!=null)
{
List<Object>
inputTupleList
=
(List<Object>)
tuple.getValues();
int
thresholdColNum
=
thresholdInfo.getThresholdColNumber();
Object
thresholdValue
=
thresholdInfo.getThresholdValue();
String
thresholdDataType
=
tupleInfo.getFieldList().get(thresholdColNum-1).getColumnType();
Integer
timeWindow
=
thresholdInfo.getTimeWindow();
int
frequency
=
thresholdInfo.getFrequencyOfOccurence();
if(thresholdDataType.equalsIgnoreCase("string"))
{
String
valueToCheck
=
inputTupleList.get(thresholdColNum-1).toString();
String
frequencyChkOp
=
thresholdInfo.getAction();
if(timeWindow!=null)
{
long
curTime
=
System.currentTimeMillis();
long
diffInMinutes
=
(curTime-startTime)/(1000);
if(diffInMinutes>=timeWindow)
{
if(frequencyChkOp.equals("=="))
{
if(valueToCheck.equalsIgnoreCase(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
elseif(frequencyChkOp.equals("!="))
{
if(!valueToCheck.equalsIgnoreCase(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
else
System.out.println("Operator
not
supported");
}
}
else
{
if(frequencyChkOp.equals("=="))
{
if(valueToCheck.equalsIgnoreCase(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
elseif(frequencyChkOp.equals("!="))
{
if(!valueToCheck.equalsIgnoreCase(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
}
}
elseif(thresholdDataType.equalsIgnoreCase("int")
||
thresholdDataType.equalsIgnoreCase("double")
||
thresholdDataType.equalsIgnoreCase("float")
||
thresholdDataType.equalsIgnoreCase("long")
||
thresholdDataType.equalsIgnoreCase("short"))
{
String
frequencyChkOp
=
thresholdInfo.getAction();
if(timeWindow!=null)
{
long
valueToCheck
=
Long.parseLong(inputTupleList.get(thresholdColNum-1).toString());
long
curTime
=
System.currentTimeMillis();
long
diffInMinutes
=
(curTime-startTime)/(1000);
System.out.println("Difference
in
minutes="+diffInMinutes);
if(diffInMinutes>=timeWindow)
{
if(frequencyChkOp.equals("<"))
{
if(valueToCheck
<
Double.parseDouble(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
elseif(frequencyChkOp.equals(">"))
{
if(valueToCheck
>
Double.parseDouble(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
elseif(frequencyChkOp.equals("=="))
{
if(valueToCheck
==
Double.parseDouble(thresholdValue.toString()))
{
count.incrementAndGet();
if(count.get()
>
frequency)
splitAndEmit(inputTupleList,collector);
}
}
elseif(frequencyChkOp.equals("!="))
{
.
.
.
}
}
}
else
splitAndEmit(null,collector);
}
else
{
System.err.println("Emitting
null
in
bolt");
splitAndEmit(null,collector);
}
}
經(jīng)由Bolt發(fā)送的的tuple將會(huì)傳遞到下一個(gè)對(duì)應(yīng)的Bolt,在我們的用例中是DBWriterBolt。DBWriterBolt經(jīng)過(guò)處理的tuple必須被持久化以便于觸發(fā)tigger或者更深層次的使用。DBWiterBolt做了這個(gè)持久化的工作并把tuple存入了數(shù)據(jù)庫(kù)。表的建立由prepare〔〕函數(shù)完成,這也將是topology調(diào)用的第一個(gè)方法。方法的編碼如ListingSix所示。ListingSix:建表編碼。publicvoid
prepare(
Map
StormConf,
TopologyContext
context
)
{
try
{
Class.forName(dbClass);
}
catch
(ClassNotFoundException
e)
{
System.out.println("Driver
not
found");
e.printStackTrace();
}
try
{
connection
driverManager.getConnection(
"jdbc:mysql://"+databaseIP+":"+databasePort+"/"+databaseName,
userName,
pwd);
connection.prepareStatement("DROP
TABLE
IF
EXISTS
"+tableName).execute();
StringBuilder
createQuery
=
new
StringBuilder(
"CREATE
TABLE
IF
NOT
EXISTS
"+tableName+"(");
for(Field
fields
:
tupleInfo.getFieldList())
{
if(fields.getColumnType().equalsIgnoreCase("String"))
createQuery.append(fields.getColumnName()+"
VARCHAR(500),");
else
createQuery.append(fields.getColumnName()+"
"+fields.getColumnType()+",");
}
createQuery.append("thresholdTimeStamp
timestamp)");
connection.prepareStatement(createQuery.toString()).execute();
//
Insert
Query
StringBuilder
insertQuery
=
new
StringBuilder("INSERT
INTO
"+tableName+"(");
String
tempCreateQuery
=
new
String();
for(Field
fields
:
tupleInfo.getFieldList())
{
insertQuery.append(fields.getColumnName()+",");
}
insertQuery.append("thresholdTimeStamp").append(")
values
(");
for(Field
fields
:
tupleInfo.getFieldList())
{
insertQuery.append("?,");
}
insertQuery.append("?)");
prepStatement
=
connection.prepareStatement(insertQuery.toString());
}
catch
(SQLException
e)
{
e.printStackTrace();
}
}
數(shù)據(jù)分批次的插入數(shù)據(jù)庫(kù)。插入的邏輯由ListtingSeven中的execute〔〕方法提供。大局部的編碼都是用來(lái)實(shí)現(xiàn)可能存在不同類(lèi)型輸入的解析。ListingSeven:數(shù)據(jù)插入的代碼局部。publicvoid
execute(Tuple
tuple,
BasicOutputCollector
collector)
{
batchExecuted=false;
if(tuple!=null)
{
List<Object>
inputTupleList
=
(List<Object>)
tuple.getValues();
int
dbIndex=0;
for(int
i=0;i<tupleInfo.getFieldList().size();i++)
{
Field
field
=
tupleInfo.getFieldList().get(i);
try
{
dbIndex
=
i+1;
if(field.getColumnType().equalsIgnoreCase("String"))
prepStatement.setString(dbIndex,
inputTupleList.get(i).toString());
elseif(field.getColumnType().equalsIgnoreCase("int"))
prepStatement.setInt(dbIndex,
Integer.parseInt(inputTupleList.get(i).toString()));
elseif(field.getColumnType().equalsIgnoreCase("long"))
prepStatement.setLong(dbIndex,
Long.parseLong(inputTupleList.get(i).toString()));
elsei
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 韓式護(hù)欄施工方案
- 第二單元 讓機(jī)器認(rèn)識(shí)我第3節(jié)“認(rèn)出”一個(gè)人 教學(xué)設(shè)計(jì) 2023-2024學(xué)年川教版(2019)初中信息技術(shù)八年級(jí)上冊(cè)
- 合同范本買(mǎi)賣(mài)合同
- 專(zhuān)職老師聘用合同范本
- 增強(qiáng)學(xué)生自主學(xué)習(xí)意識(shí)的方法計(jì)劃
- 班主任與學(xué)校管理層的溝通計(jì)劃
- 歌唱與律動(dòng)小班音樂(lè)教育探討計(jì)劃
- 可持續(xù)發(fā)展在年度計(jì)劃中的應(yīng)用
- 法務(wù)部合規(guī)管理工作回顧與展望計(jì)劃
- 九年級(jí)體育 教學(xué)實(shí)錄(素質(zhì)練習(xí)1) 人教新課標(biāo)版
- Barrett食管醫(yī)學(xué)知識(shí)講解
- DB3302T 1016-2018城市綠地養(yǎng)護(hù)質(zhì)量等級(jí)標(biāo)準(zhǔn)
- 2023年寧波財(cái)經(jīng)學(xué)院?jiǎn)握忻嬖囶}庫(kù)及答案解析
- 數(shù)獨(dú)課件完整版
- 西師大版六年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)知識(shí)點(diǎn)匯總
- 江西2023年分宜九銀村鎮(zhèn)銀行社會(huì)招聘上岸提分題庫(kù)3套【500題帶答案含詳解】
- 2023年知識(shí)產(chǎn)權(quán)保護(hù)公需課試題答案
- JJG 370-2019在線振動(dòng)管液體密度計(jì)
- GB/T 8162-2018結(jié)構(gòu)用無(wú)縫鋼管
- GB/T 36018-2018吹氧金屬軟管
- GB/T 22095-2008鑄鐵平板
評(píng)論
0/150
提交評(píng)論