2018-11-08 16:49:30 1700瀏覽
我們在海量數(shù)據(jù)在分析處理時會有各種各樣無法預想的問題,本篇文章扣丁學堂大數(shù)據(jù)培訓小編給大家分享一下海量數(shù)據(jù)處理分析有哪些經(jīng)驗,對大數(shù)據(jù)開發(fā)感興趣或者是想要加入到大數(shù)據(jù)培訓領域的小伙伴就隨小編一起來了解一下吧。
1、選用優(yōu)秀的數(shù)據(jù)庫工具
現(xiàn)在的數(shù)據(jù)庫工具廠家比較多,對海量數(shù)據(jù)的處理對所使用的數(shù)據(jù)庫工具要求比較高,一般使用Oracle或者DB2,微軟公司SQL Server 2005性能也不錯。另外在BI領域:數(shù)據(jù)庫,數(shù)據(jù)倉庫,多維數(shù)據(jù)庫,數(shù)據(jù)挖掘等相關工具也要進行選擇,像好的ETL工具和好的OLAP工具都十分必要,例如Informatic,Eassbase等。筆者在實際數(shù)據(jù)分析項目中,對每天6000萬條的日志數(shù)據(jù)進行處理,使用SQL Server 2000需要花費6小時,而使用SQL Server 2005則只需要花費3小時。
2、編寫優(yōu)良的程序代碼
處理數(shù)據(jù)離不開優(yōu)秀的程序代碼,尤其在進行復雜數(shù)據(jù)處理時,必須使用程序。好的程序代碼對數(shù)據(jù)的處理至關重要,這不僅僅是數(shù)據(jù)處理準確度的問題,更是數(shù)據(jù)處理效率的問題。良好的程序代碼應該包含好的算法,包含好的處理流程,包含好的效率,包含好的異常處理機制等。
3、對海量數(shù)據(jù)進行分區(qū)操作
對海量數(shù)據(jù)進行分區(qū)操作十分必要,例如針對按年份存取的數(shù)據(jù),我們可以按年進行分區(qū),不同的數(shù)據(jù)庫有不同的分區(qū)方式,不過處理機制大體相同。例如SQL Server的數(shù)據(jù)庫分區(qū)是將不同的數(shù)據(jù)存于不同的文件組下,而不同的文件組存于不同的磁盤分區(qū)下,這樣將數(shù)據(jù)分散開,減小磁盤I/O,減小了系統(tǒng)負荷,而且還可以將日志,索引等放于不同的分區(qū)下。
4、建立廣泛的索引
對海量的數(shù)據(jù)處理,對大表建立索引是必行的,建立索引要考慮到具體情況,例如針對大表的分組、排序等字段,都要建立相應索引,一般還可以建立復合索引,對經(jīng)常插入的表則建立索引時要小心,筆者在處理數(shù)據(jù)時,曾經(jīng)在一個ETL流程中,當插入表時,首先刪除索引,然后插入完畢,建立索引,并實施聚合操作,聚合完成后,再次插入前還是刪除索引,所以索引要用到好的時機,索引的填充因子和聚集、非聚集索引都要考慮。
5、建立緩存機制
當數(shù)據(jù)量增加時,一般的處理工具都要考慮到緩存問題。緩存大小設置的好差也關系到數(shù)據(jù)處理的成敗,例如,筆者在處理2億條數(shù)據(jù)聚合操作時,緩存設置為100000條/Buffer,這對于這個級別的數(shù)據(jù)量是可行的。
6、加大虛擬內(nèi)存
如果系統(tǒng)資源有限,內(nèi)存提示不足,則可以靠增加虛擬內(nèi)存來解決。筆者在實際項目中曾經(jīng)遇到針對18億條的數(shù)據(jù)進行處理,內(nèi)存為1GB,1個P4 2.4G的CPU,對這么大的數(shù)據(jù)量進行聚合操作是有問題的,提示內(nèi)存不足,那么采用了加大虛擬內(nèi)存的方法來解決,在6塊磁盤分區(qū)上分別建立了6個4096M的磁盤分區(qū),用于虛擬內(nèi)存,這樣虛擬的內(nèi)存則增加為 4096*6 + 1024 = 25600 M,解決了數(shù)據(jù)處理中的內(nèi)存不足問題。
7、分批處理
海量數(shù)據(jù)處理難因為數(shù)據(jù)量大,那么解決海量數(shù)據(jù)處理難的問題其中一個技巧是減少數(shù)據(jù)量。可以對海量數(shù)據(jù)分批處理,然后處理后的數(shù)據(jù)再進行合并操作,這樣逐個擊破,有利于小數(shù)據(jù)量的處理,不至于面對大數(shù)據(jù)量帶來的問題,不過這種方法也要因時因勢進行,如果不允許拆分數(shù)據(jù),還需要另想辦法。不過一般的數(shù)據(jù)按天、按月、按年等存儲的,都可以采用先分后合的方法,對數(shù)據(jù)進行分開處理。
8、使用臨時表和中間表
數(shù)據(jù)量增加時,處理中要考慮提前匯總。這樣做的目的是化整為零,大表變小表,分塊處理完成后,再利用一定的規(guī)則進行合并,處理過程中的臨時表的使用和中間結果的保存都非常重要,如果對于超海量的數(shù)據(jù),大表處理不了,只能拆分為多個小表。如果處理過程中需要多步匯總操作,可按匯總步驟一步步來,不要一條語句完成,一口氣吃掉一個胖子。
想要了解更多關于大數(shù)據(jù)方面內(nèi)容的小伙伴,請關注扣丁學堂大數(shù)據(jù)培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的大數(shù)據(jù)開發(fā)環(huán)境搭建視頻,扣丁學堂老師精心推出的大數(shù)據(jù)視頻直播課定能讓你快速掌握大數(shù)據(jù)從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂大數(shù)據(jù)學習群:209080834。
【關注微信公眾號獲取更多學習資料】
查看更多關于“大數(shù)據(jù)培訓資訊”的相關文章>