本發明涉及一種數據處理方法,特別是涉及一種對海量數據中特定類型數據的處理方法。
背景技術:
在競爭與機遇并存的數字化信息時代,數據的分析與統計以決策支撐的身份出現在經濟、管理、規劃和投資等許多相關領域。作為為企業經營部門和決策層提供重要決策依據的技術手段,需要完成對反應和影響企業發展的重要數據進行實時收集、分析,并及時形成關鍵信息并反饋的處理過程,在滿足時效性的前提下,客觀地反應業務發展狀況。
例如對經營性企業來說,用戶數指標是反映業務發展的一項關鍵指標。
在用戶業務量不斷增長的情況下,海量數據環境下如何快速計算出用戶數,已經成為數據分析系統亟待解決的業務需求。在面對每天產生的上億條用戶使用日志進行海量數據統計處理的計算中,用戶數的快速讀取計算是一個急需解決的技術難題。
目前,計算海量數據的現有技術通常采用的方法是進行一次對一種維度(即某一個計算指標或參數,例如日期、業務類型、用戶類型等)的統計需求,就要對全部數據進行一次掃描計算,具體方法包括分組、去重、求和的過程。用戶數的計算過程是首先要在全部數據中排除重復用戶的標識,然后計算去重后的用戶數量。
當增加統計維度時,還需要重新進行去重操作與重復計算,其計算量非常巨大和耗時。例如:針對一天的日志數據分別計算網絡類型和業務類型的用戶數時,按照現有技術的方法,需要掃描兩次日志文件數據源:第一次計算網絡類型的用戶對象的數量,第二次計算業務類型的用戶對象數量。
當需要以上兩種類型(兩個維度)的組合用戶數時,還需要重新進行一次掃描和計算,而每一次的掃描與統計計算因為涉及海量的數據對象,都會占用大量的計算機資源。每一次對數據源(通常是存儲在數據庫中的日志數據)的掃描,需要調用高級數據接口、處理復雜數據對象,往往要對數據庫引擎、處理器和磁盤系統、內存系統造成較大壓力,海量數據的掃描周期較長也不利于保證時效性。
如何快速完成多維度用戶數據的掃描計算形成多維度數據分析結果,這一計算機數值分析與統計領域的技術問題,往往涉及以下技術難點:
如何定位數據源中的某一維度的數據,在去重的同時保證數據的離散化和可檢索。這是保證減少完整掃描次數和滿足數據掃描結果積累更新的關鍵。
如何形成對海量數據的高效中間運算,盡量運用低級運算方式和方法,避免高級數據對象運算形成的高TPS(每秒處理事務數)消耗。
技術實現要素:
有鑒于此,本發明實施例提供了一種從海量數據中進行維度數據快速定位的方法,用于解決海量數據掃描過程數據離散化程度低,數據無法有效定位,導致數據分析效率低下的技術問題。
本發明的一種從海量數據中高效計算多個維度用戶數的方法,包括以下步驟:
掃描數據源,利用位置標識定位單一維度下的用戶位置信息,形成用戶分布數據;
根據用戶分布數據形成可存儲的維度用戶數據;
在可存儲的維度用戶數據間,通過布爾運算形成多維數據分析結果。
所述位置標識的形成過程包括:
通過建立用戶標識鍵值結構,形成用戶的位置標識。
所述位置標識的形成過程包括:
獲取數據源中的用戶信息,提取用戶標識;
為每一用戶分配唯一的數字標識,形成用戶標識和數字標識的鍵值對數據;
利用鍵值對數據建立可讀入內存的用戶鍵值對結構數據。
所述用戶分布數據的形成過程包括:
分段掃描數據源,提取數據源中單一維度的用戶數據中的用戶信息,形成相應的用戶標識;
用戶標識與內存中的用戶鍵值對結構數據比較,形成去重的用戶的相應鍵值對數據;
將相應用戶鍵值對數據形成線性結構數據;
利用線性結構數據中的值定位內存中的存儲位,利用鍵作為賦值依據,賦值,形成二維空間中的用戶分布數據。
所述線性結構數據采用鏈表結構。
所述維度用戶數據的形成過程包括:
通過數據容器建立可存儲的數據環境;
根據用戶分布數據中的位置數據確定存儲范圍;
根據用戶分布數據中的位置數據在數據容器的相應位賦值,在數據容器的其他位填充;
將數據容器中的內容形成磁盤文件,作為單一維度的用戶的位置的數據文件。
所述多維數據分析過程包括:
利用數據容器獲取不同單一維度的用戶的位置的數據文件;
在數據容器中對各數據文件的相應位進行布爾運算,形成布爾運算的結果序列,計數結果序列中的標識值,形成相應維度的用戶數信息。
所述用戶標識與內存中的用戶鍵值對結構數據比較,形成去重的用戶的相應鍵值對數據替換為用戶標識與內存中的用戶鍵值對結構數據比較,形成重復的用戶的相應鍵值對數據;
所述線性結構數據采用隊列結構。
所述根據用戶分布數據中的位置數據在數據容器的相應位賦值,包括:
在賦值前與相應位進行或運算。
所述建立用戶標識鍵值結構采用Hash算法;
所述形成可存儲的維度用戶數據采用BLOB容器。
本發明的從海量數據中進行維度數據快速定位的方法,利用數值的離散性,將與用戶對應的連續數值形成相關的位置標識作為坐標,將位置標識映射為二維空間中的位置和距離,并利用內存地址的連續性確定相應的位置和距離,在線性位置的內存對象賦值,形成可測量和存儲的分布信息,利用布爾運算形成相應維度類型的用戶信息。解決了維度數據處理無法利用高效運算方式造成處理結果時效性差和系統負荷無法降低的技術問題。利用用戶與離散數值間建立的位置標識,在內存空間中建立位置關聯,將映射的用戶信息以位置信息存儲,充分利用內存環境的尋址性能和處理器低級運算的絕對優勢,將海量數據中的維度用戶數據分析的運算周期大大縮短。
附圖說明
圖1a為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的流程圖;
圖1b為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的預置流程圖;
圖2為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的位置標識的形成流程圖;
圖3為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的用戶分布的形成流程圖;
圖4為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的維度數據的形成流程圖;
圖5為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的多維度用戶分析的形成流程圖;
圖6為本發明從海量數據中高效計算多個維度用戶數的方法一實施例形成維度用戶數據的過程示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
圖紙中的步驟編號僅用于作為該步驟的附圖標記,不表示執行順序。
本發明的從海量數據中高效計算多個維度用戶數的方法,利用數的離散性,將與用戶對應的連續數值形成相關的位置標識,將位置標識映射為二維空間中的位置和距離,并利用內存地址的連續性確定相應的位置和距離,利用布爾運算形成相應維度類型的用戶信息。
圖1a為本發明一實施例的從海量數據中高效計算多個維度用戶數的方法的流程圖,為形成多維度用戶信息的過程。如圖1a所示,該方法包括:
步驟02:掃描數據源,利用位置標識定位單一維度下的用戶位置信息,形成用戶分布數據;
步驟03:根據用戶分布數據形成可存儲的維度用戶數據;
步驟04:在可存儲的維度用戶數據間,通過布爾運算形成多維數據分析結果。
本實施例的從海量數據中高效計算多個維度用戶數的方法,利用用戶與離散數值間建立的位置標識,在內存空間中建立位置關聯,將映射的用戶信息以位置信息存儲,充分利用內存環境的尋址性能和處理器低級運算的絕對優勢,將海量數據中的維度用戶數據分析的運算周期大大縮短。在復雜的多維度用戶數的處理過程中,可以將數據源掃描頻率降低、分析過程簡化,處理速度可以提高一至兩個量級。
圖1b為本發明一實施例的從海量數據中高效計算多個維度用戶數的方法的預置流程圖,提供了一種形成位置標識的過程,如圖1b所示,該方法包括:
步驟01:建立用戶標識鍵值結構,形成用戶的位置標識。
步驟01作為利用位置標識進行數據處理前的獨立的數據處理過程。
本實施例的從海量數據中高效計算多個維度用戶數的方法,利用數值的離散性,將離散用戶與連續數值關聯形成位置標識,連續數值映射為二維空間中的距離和位置。
圖2為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的位置標識的形成流程圖。如圖2所示包括:
步驟11:獲取數據源中的用戶信息,提取用戶標識;
通過分段掃描數據源,獲取用戶信息,提取用戶的唯一用戶標識。具有分段提取數據功能有利于數據源積累時的更新。
步驟12:為每一用戶分配唯一的數字標識,形成用戶標識和數字標識的鍵值對數據;
待分配的數字標識具有連續性,且不可重復,每個用戶的用戶標識固定對應一個數字標識,數字標識的分配具有隨機性。保證鍵及鍵值的唯一性,數字標識的分配符合正態分布。
步驟13:利用鍵值對數據建立可讀入內存的用戶鍵值對結構數據。
例如,利用JAVA編程將該用戶標識和數字標識的對應關系加載至哈希映射對象HashMap中,形成"用戶名:數字標識"的鍵值對數據結構,用戶標識為鍵,數字標識為值。
圖3為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的用戶分布的形成流程圖。如圖3所示包括:
步驟21:分段掃描數據源,提取數據源中單一維度的用戶數據中的用戶信息,形成相應的用戶標識;
可以是同步提取數據源中其他各維度的用戶數據中的用戶信息,形成后續并行的數據處理過程。
步驟22:用戶標識與內存中的用戶鍵值對結構數據比較,形成去重的用戶的相應鍵值對數據;
去重,體現了在同一維度中的用戶數量,也可以采用對用戶標識進行標記,對標記進行布爾或運算,過濾重復的用戶信息。例如,在分段掃描數據源的過程中,在用戶鍵值對結構數據上設置標記為1,被標記過的用戶鍵值對對應的重復用戶標識放棄。適合在一次完整的海量數據的用戶分布數據形成過程中使用,可以與分段掃描配合。
步驟23:將相應用戶鍵值對數據形成線性結構數據;
線性結構數據采用鏈表結構,利用鍵和值確定相應鏈表節點的域值。
步驟24:利用線性結構數據中的值定位內存中的存儲位,利用鍵作為賦值依據,賦值,形成二維空間中的用戶分布數據。
利用內存的連續尋址特點,將離散的用戶數據通過鍵值對映射在內存的連續地址空間中,獲得位置的索引信息,并充分利用內存運算速度,避免與存儲裝置頻繁交互。
圖4為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的維度數據的形成流程圖。如圖4所示包括:
步驟31:通過數據容器建立可存儲的數據環境;
利用數據庫中存儲二進制大對象文件的容器BLOB建立數據容器,也可以用個編程語言化凝重的相應數據類型對象形成容器。
步驟32:根據用戶分布數據中的位置數據確定存儲范圍;
位置數據的最大值可用來確定數據容器的尺寸,數據容器的尺寸與位置數據數值相適應,可以后續擴大,與用戶積累更新相適應。
步驟33:根據用戶分布數據中的位置數據在數據容器的相應位賦值,在數據容器的其他位填充;
在數據容器的與位置數據對應的位賦值1,在其他位賦值0。也可以先填充0,再做相應的賦值過程。
步驟34:將數據容器中的內容形成磁盤文件,作為單一維度的用戶的位置的數據文件。
利用數據容器形成尺寸與內存地址相應的位或字節的對應存儲,將內存地址中的信息映射為磁盤文件中具體的位或字節。用于映射用戶標識的連續內存地址在磁盤文件中形成相對起始位置的偏移地址,保證了映射前后的位置和間距的固定。
在本發明從海量數據中高效計算多個維度用戶數的方法一實施例的數據處理過程中,在上述步驟21中以并行方式同步提取數據源中其他各維度的用戶數據中的用戶信息的相應后續步驟會形成若干個單一維度的用戶的位置的數據文件。
圖5為本發明從海量數據中高效計算多個維度用戶數的方法一實施例的多維度用戶分析的形成流程圖。如圖5所示包括:
步驟41:利用數據容器獲取不同單一維度的用戶的位置的數據文件;
步驟42:在數據容器中對各數據文件的相應位進行布爾運算,形成布爾運算的結果序列,計數結果序列中的標識值,形成相應維度的用戶數信息。
單一維度用戶位置數據文件中包括以位數據形成的用戶分布數據中的位置信息和用戶信息,利用相同位置的用戶信息標記內容做必要的布爾運算,可以充分利用軟硬件環境的優勢,完成數據分析。
例如,不同維度用戶的數據文件中相同位置的布爾運算有下述兩種:
位與是兩個二進制位做與運算:該兩個位必須都為1時,它們的與運算結果才為1,否則為0;
位或是兩個二進制位做或運算:該兩個位只要有一個為1,它們的或運算結果就為1,否則為0。
將BLOB存儲位置二進制位對象轉換為JAVA中表示大整數數據結構的BigInteger對象;
若是統計一個緯度的用戶數,則對單一維度用戶位置數據文件調用BigInteger對象的bitCount()方法,統計其中二進制1的個數,就能夠獲得用戶數的數據。
若是統計多個緯度組合匹配的用戶數,則要對多個單一維度用戶位置數據文件相應的位對象進行布爾運算,形成一個二進制序列,再計算位運算后的BigInteger對象的1的個數,才能得到所需求的用戶數數據。
本發明的從海量數據中高效計算多個維度用戶數的方法的上述實施例的中的去重,可以與線性結構數據的結構優化相結合,形成另一種用戶分布數據的形成過程,包括:
在步驟22替換為:用戶標識與內存中的用戶鍵值對結構數據比較,形成包括重復用戶的相應鍵值對數據;
在步驟23的線性結構數據采用隊列數據結構:將相應用戶鍵值對數據形成隊列,記錄包含重復出現的用戶鍵值。
相應的,在步驟33替換為:根據用戶分布數據中的位置數據在數據容器的相應位利用布爾運算去重、賦值,在數據容器的其他位填充。
本實施例中,利用改變線性結構數據的數據結構,改變了去重的處理步驟和實現位置,可以使得去重盡量利用低級的布爾運算,避免對高級數據對象的運算,進一步提高處理性能。
圖6為本發明從海量數據中高效計算多個維度用戶數的方法一實施例形成維度用戶數據的過程示意圖。如圖6所示,用戶標識鍵值結構形成的鍵值對為“用戶:數值”,一用戶對應一個唯一的數值,數值以遞增的整數連續分配。數值與內存的地址相匹配,一數值對應內存一地址(具體為位地址或字節地址)。當在單一維度的用戶位置計算時,例如該維度的數據對象中出現user1、2、3、5、6,那么經計算映射,在相應內存地址的寄存器置1,則所有用戶范圍內的用戶信息序列數據位1110110,該數據采用BLOB對象可以直接處理為相應的二進制序列形成相應的磁盤文件,使位置及用戶信息與維度相對應地保存,并用于后續的數據分析。
根據本發明實施例的從海量數據中高效計算多個維度用戶數的方法形成的相應的處理裝置,至少包括:
用戶分布數據生成裝置,用于掃描數據源,利用位置標識定位單一維度下的用戶位置信息,形成用戶分布數據;
維度用戶數據生成裝置,用于根據用戶分布數據形成可存儲的維度用戶數據的裝置;
多維數據分析結果生成裝置,用于在可存儲的維度用戶數據間,通過布爾運算形成多維數據分析結果的裝置。
還包括位置標識裝置,用于建立用戶標識鍵值結構,形成用戶的位置標識。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換等,均應包含在本發明的保護范圍之內。