趙珊
摘要:伴隨著云計(jì)算、物聯(lián)網(wǎng)等新興技術(shù)的不斷發(fā)展,數(shù)據(jù)量呈現(xiàn)幾何式的增長(zhǎng),海量龐大的數(shù)據(jù)出現(xiàn)標(biāo)志著大數(shù)據(jù)時(shí)代的來臨。從海量的數(shù)據(jù)資源中提取有價(jià)值的信息并反饋給用戶是數(shù)據(jù)處理面臨的主要研究方向。本文主要探討Java這門經(jīng)典的編程語言在當(dāng)前的數(shù)據(jù)環(huán)境下,如何實(shí)現(xiàn)對(duì)大數(shù)據(jù)的加工及優(yōu)化處理,來實(shí)現(xiàn)數(shù)字資產(chǎn)的保值增值。
關(guān)鍵詞:Java 大數(shù)據(jù) 處理技術(shù)
中圖分類號(hào):TP315.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)09-0239-01
1 Java處理數(shù)據(jù)時(shí)的交互方式
大數(shù)據(jù)本身就是傳統(tǒng)意義上的數(shù)據(jù)的幾何級(jí)表現(xiàn)形式。大數(shù)據(jù)技術(shù)意義在于對(duì)這些有價(jià)值的數(shù)據(jù)進(jìn)行專業(yè)化處理,通過“加工”實(shí)現(xiàn)數(shù)據(jù)的“增值”。大數(shù)據(jù)處理的一個(gè)關(guān)鍵環(huán)節(jié)就是數(shù)據(jù)處理引擎如何與大數(shù)據(jù)有一個(gè)良好的連接通道。目前比較主流的數(shù)據(jù)處理引擎開發(fā)語言有Java,C#,C++等。
Java作為主流開發(fā)語言的連接數(shù)據(jù)庫方式采用JDBC,通過建立一個(gè)數(shù)據(jù)庫連接池以及一套連接使用、分配、管理策略,連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。另外,由于對(duì)JDBC中的原始連接進(jìn)行了封裝,隔離了應(yīng)用本身的處理邏輯和具體數(shù)據(jù)庫訪問邏輯,使應(yīng)用本身的復(fù)用成為可能,提高了開發(fā)效率。
從傳統(tǒng)技術(shù)發(fā)展來看,一般新技術(shù)通常不會(huì)跨越太大。特別是軟件開發(fā)技術(shù),為了不過度超前采用一種妥協(xié)的技術(shù)發(fā)展方式向下兼容。新技術(shù)大多是從傳統(tǒng)方式拓展延伸過來,而不是跨越式的從新研發(fā)一套全新的技術(shù),大數(shù)據(jù)處理也遵循著這樣的一個(gè)原則。
2 大數(shù)據(jù)量下的內(nèi)存管理
JVM(Java Virtual Machine,Java虛擬機(jī))是Java的核心和基礎(chǔ),在Java編譯器和OS平臺(tái)之間的虛擬處理器。它是一種基于操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來實(shí)現(xiàn)的抽象的計(jì)算機(jī),主要功能是管理分配內(nèi)存和執(zhí)行垃圾回收。JVM內(nèi)存結(jié)構(gòu)由堆、棧、本地方法棧、方法區(qū)等部分組成。
當(dāng)Java一次性從數(shù)據(jù)庫加載過多的數(shù)據(jù)時(shí),由于查詢結(jié)果的記錄首先要讀入JVM內(nèi)存,大量的數(shù)據(jù)占用了內(nèi)存空間,此時(shí)再為實(shí)例化對(duì)象申請(qǐng)空間時(shí),便出現(xiàn)內(nèi)存溢出的問題,即使調(diào)整內(nèi)存大小,啟動(dòng)程序的時(shí)候加上-Xmx1024m,將JVM可以使用調(diào)至1G內(nèi)存,很多時(shí)候也不能滿足調(diào)用數(shù)據(jù)量的要求。
3 大數(shù)據(jù)量處理時(shí)的優(yōu)化方案
通過對(duì)JVM使用內(nèi)存的分析,結(jié)合數(shù)據(jù)調(diào)用處理的研究與實(shí)踐,得出的解決方案如下:
(1)客戶端讀取數(shù)據(jù)時(shí),不再一次性讀入JVM內(nèi)存中,采用分批查出所有數(shù)據(jù),每次查詢得到的部分記錄使用恒定內(nèi)存讀入的方法,避免內(nèi)存溢出問題。
(2)將查詢出的數(shù)據(jù)在JVM內(nèi)存中經(jīng)過簡(jiǎn)單加工寫入查詢結(jié)果文件,對(duì)生成的記過文件進(jìn)行壓縮,目的是減小文件大小,節(jié)省帶寬,加快文件傳輸速度,然后按一定規(guī)則存入本地硬盤。
(3)獲取數(shù)據(jù)時(shí),通過批次讀取將壓縮文件直接發(fā)給客戶端,在客戶端解開壓縮文件獲得查詢結(jié)果。
4 結(jié)語
本文通過Java語言數(shù)據(jù)處理時(shí)的原理分析,提出了大數(shù)據(jù)量數(shù)據(jù)加載的解決方案,實(shí)現(xiàn)了在不增加硬件開銷的前提下,由于數(shù)據(jù)量大導(dǎo)致的內(nèi)存溢出問題,保證了數(shù)據(jù)查詢時(shí)系統(tǒng)的高效與穩(wěn)定性。
參考文獻(xiàn)
[1]宋東海,賁可榮,張志祥,等.一種基于類的JAVA多線程程序數(shù)據(jù)競(jìng)爭(zhēng)靜態(tài)檢測(cè)算法[J].《計(jì)算機(jī)工程與科學(xué)》,2014.02.
數(shù)字技術(shù)與應(yīng)用2016年9期