許佳勝 李若白 劉立云 王昊天 河北農業大學信息科學與技術學院
從字面意義上來看,大數據表示數量上數據規模的龐大,但是我們無法將其區別于以往的名詞如“海量數據”,但我們可以從其特征來深入的理解。
一般來說大數據有三個特征,分別是規模性、多樣性和高速性。規模性指數據的規模和容量巨大;多樣性指數據的類型多種多樣,包括結構化的和無結構化的數據;高速性是指數據的增長速度非常快,在增長的高峰期接近于指數級增長。我們在實際應用過程中應該首要理解大數據的這些特征,再進行下一步分析。
大數據的處理模式分為兩種,一種是流處理,一種是批處理。流是一種數據傳送技術,它把客戶端產生的數據轉變成穩定的數據流,所以流處理的處理方式為直接處理,而批處理,顧名思義,則是對數據進行批量的處理。
提出流處理的基本概念是人們普遍認為在數據的處理過程中數據的價值會隨著時間的推移而逐漸減少,所以需要盡可能快的處理實時產生的數據。客戶端接連不斷產生的數據構成了流處理的原材料——數據流,數據流中的數據會根據數據產生的時間依次被系統處理并返回結果。
由于數據流具有持續性、快速性和規模大的特點,系統一方面不可能對傳送的所有數據永久性的存儲,另一方面接受到的數據又處在不斷變化當中,所以往往做到數據的實時處理具有一定的難度。流處理一般是在內存中完成的,但內存的容量是有限的,這成為縮短響應時間的一個很大的瓶頸。數據流理論和技術的提出已經有十幾年,人們目前已經研究出了很多實際的系統應用,例如Facebook 的 Scribe、Apache的Flume、Twitter的 Storm等。
數據的批處理,可以通俗理解為在數據輸入處理過程中成批次的并行處理,處理之后的結果再轉化成最終的結果輸出,Google的MapReduce模式是目前批處理模式中比較成功的一種,下面簡單介紹其處理流程:
待處理的數據先要進行分批處理,經過分批后的每個數據塊再轉交給相應的Map任務區,Map任務區首先把數據塊中的數據解析成一個個的鍵值對,然后利用Map函數處理這些鍵值對并把結果存儲到硬盤。接下來,Reduce任務負責把這些鍵值對按照鍵值排好序,將具有相同鍵值的數據組合在一起,之后調用Reduce函數來產生最終的結果。Map函數和Reduce函數是該模型的核心,通過定義這兩個函數可以將模型按照相應的規則來處理大規模數據。目前該模型由于其簡單性和適用廣泛性已普遍應用于生物信息,文本挖掘等領域。
雖然大數據的來源廣泛,包括交易數據、移動通信數據、機器檢測數據、互聯網上的開放數據等等,但大數據處理的基本流程是一樣的。流程可分為三個階段:數據的抽取與集成、數據分析以及數據解釋。
由于大數據的來源廣泛,首先要從數據源中抽取出關系和實體,再將其經過關聯后采用統一的結構來進行存儲。在數據的抽取和集成的過程中同時還要注意到對數據的清洗工作,以此來保證數據的準確性和可靠性。
數據的抽取和集成技術到目前還在不斷發展之中,比較常見的數據抽取工具有可通過圖形界面把抽取的數據再次過濾的Import.io,支持跨平臺抽取的Parsehub等。
數據分析階段的輸入為在數據的抽取與集成階段形成的有結構的數據,在實際應用中可根據需求不同有選擇的對數據進行分析。
在大數據時代一些之前提出的分析數據的方法例如計劃評審技術、統計分析等將需要進一步作出改進。由于大數據的處理要求系統具有實時性,算法的高處理效率尤為重要,所以分析算法要更多考慮其效率問題。又如面對大數據常見的處理方式云計算時,很多算法需要根據云計算框架作出適應性調整。目前大數據分析已經被廣泛應用到各個領域,如電商領域的客戶需求分析、金融領域的金融分析、房地產行業的投資決策分析等。
數據解釋面向的對象是用戶,若正確的數據分析結果不加以正確解釋,將導致用戶難以理解甚至誤導用戶的情況。傳統的數據解釋的方法有很多,如通過文本的方式展示給用戶,這種方式在小數據量的情況下是適用的,但面對大數據這樣大規模的數據往往顯得力不從心。
在展示大規模的數據時我們可以引入可視化技術,數據分析結果通過直觀清晰的可視化界面能夠使用戶更容易理解和接受,目前常用的可視化技術有datav、echarts等。
通過本文我們可以了解到大數據的基本概念,對大數據的處理模式和大數據的處理流程有基本的認識。我們應該認識到,大數據時代已經悄然而至,但目前尚處于不成熟的階段,還面臨著諸多挑戰,如大數據能耗問題,大數據隱私問題等。