一種海量數(shù)據(jù)的處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種海量數(shù)據(jù)的處理方法及裝置。
【背景技術(shù)】
[0002] 隨著大型數(shù)據(jù)庫(kù)的不斷建立,大數(shù)據(jù)時(shí)代已然來臨。大數(shù)據(jù)具有高容量、高價(jià)值、 多樣化和持續(xù)性等特點(diǎn),其非結(jié)構(gòu)化的特性,使得數(shù)據(jù)的保存、管理、挖掘等成為了當(dāng)前企 業(yè)面臨的挑戰(zhàn)。在實(shí)際應(yīng)用中,往往需要根據(jù)數(shù)據(jù)應(yīng)用的內(nèi)存占用率、CPU占用率等信息來 選擇占用率較低的數(shù)據(jù)應(yīng)用,或者,根據(jù)各個(gè)節(jié)點(diǎn)的處理性能選擇處理性能較高的節(jié)點(diǎn)進(jìn) 行數(shù)據(jù)處理,因此,需要對(duì)各個(gè)數(shù)據(jù)應(yīng)用的內(nèi)存占用率或CPU占用率進(jìn)行排序,或者,對(duì)各 個(gè)節(jié)點(diǎn)的處理性能進(jìn)行排序,以實(shí)現(xiàn)快速選擇。
[0003]目前,可以采用下述方式實(shí)現(xiàn)快速選擇:S0 :計(jì)算出各個(gè)數(shù)據(jù)信息對(duì)應(yīng)的數(shù)值,其 中,該數(shù)據(jù)信息對(duì)應(yīng)實(shí)際應(yīng)用中數(shù)據(jù)應(yīng)用的內(nèi)存占用率或CPU占用率、節(jié)點(diǎn)的處理性能等; S1 :比較相鄰的數(shù)值,如果第一個(gè)數(shù)值比第二個(gè)數(shù)值大,則交換這兩個(gè)數(shù)值的位置;S2 :針 對(duì)每一對(duì)相鄰數(shù)值執(zhí)行S1,直到所有數(shù)值按照從小到大的順序排列;S3 :根據(jù)實(shí)際需求在 排列后的所有數(shù)值中進(jìn)行選擇。
[0004] 對(duì)于大數(shù)據(jù)時(shí)代,數(shù)據(jù)量的級(jí)別已經(jīng)達(dá)到海量數(shù)據(jù),現(xiàn)有技術(shù)中需要重復(fù)的走訪 各個(gè)數(shù)值,因此處理過程耗時(shí)較長(zhǎng),效率較低。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供一種海量數(shù)據(jù)的處理方法及裝置,以減少處理過程的耗時(shí)、 提尚處理效率。
[0006] 本發(fā)明提供料一種海量數(shù)據(jù)的處理方法,包括:
[0007] 計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值;
[0008] 根據(jù)所有數(shù)值中的最大值,建立數(shù)組;其中,所述數(shù)組中至少包括與所述最大值對(duì) 應(yīng)的數(shù)值相等的個(gè)數(shù)的存放位置,每一個(gè)存放位置對(duì)應(yīng)該存放位置在所述數(shù)組中的位置序 號(hào);
[0009] 遍歷所述所有數(shù)值,針對(duì)遍歷到的每一個(gè)數(shù)值,執(zhí)行如下操作:將所述當(dāng)前數(shù)值存 放到所述數(shù)組中與所述當(dāng)前數(shù)值相等的位置序號(hào)所對(duì)應(yīng)的存放位置處,并在對(duì)應(yīng)的存放位 置處的標(biāo)識(shí)加1,其中,未存放有數(shù)值的存放位置處的標(biāo)識(shí)初始值為〇,其中,該標(biāo)識(shí)對(duì)應(yīng)的 值用于表征對(duì)應(yīng)存放位置處存放的數(shù)值個(gè)數(shù)。
[0010] 優(yōu)選地,在所述計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值之后,所述根據(jù)所有數(shù)值 中的最大值,建立數(shù)組之前,進(jìn)一步包括:
[0011] 對(duì)所有數(shù)值進(jìn)行初始化操作,以使初始化操作后的所有數(shù)值都是整數(shù)。
[0012] 優(yōu)選地,在所述根據(jù)所有數(shù)值中的最大值,建立數(shù)組之前,進(jìn)一步包括:利用 HashSet容器、SortedSet容器、TreeSet容器或EnumSet容器對(duì)所有數(shù)值中的重復(fù)數(shù)值進(jìn) 行過濾。
[0013] 優(yōu)選地,進(jìn)一步包括:記錄計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值的開始時(shí)間點(diǎn) 以及記錄將所有數(shù)值中的最后一個(gè)數(shù)值存放到所述數(shù)組中與該最后一個(gè)數(shù)值相等的位置 序號(hào)所對(duì)應(yīng)的存放位置處的時(shí)間點(diǎn),以確定海量數(shù)據(jù)的處理時(shí)間段。
[0014] 優(yōu)選地,進(jìn)一步包括:
[0015] 依次從所述數(shù)組中每一個(gè)存放位置處取出不為0的數(shù)值,其中,在取值過程中,若 存放位置處的標(biāo)識(shí)大于1,則依次從該存放位置處取出與該存放位置的標(biāo)識(shí)相等個(gè)數(shù)的數(shù) 值,并將依次取出的不為0的數(shù)值存入列表中。
[0016] 本發(fā)明還提供了一種海量數(shù)據(jù)的處理裝置,包括:
[0017] 計(jì)算單元,用于計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值;
[0018] 建立單元,用于根據(jù)所有數(shù)值中的最大值,建立數(shù)組;其中,所述數(shù)組中至少包括 與所述最大值對(duì)應(yīng)的數(shù)值相等的個(gè)數(shù)的存放位置,每一個(gè)存放位置對(duì)應(yīng)該存放位置在所述 數(shù)組中的位置序號(hào);
[0019] 處理單元,用于遍歷所述所有數(shù)值,針對(duì)遍歷到的每一個(gè)數(shù)值,執(zhí)行如下操作:將 所述當(dāng)前數(shù)值存放到所述數(shù)組中與所述當(dāng)前數(shù)值相等的位置序號(hào)所對(duì)應(yīng)的存放位置處,并 在對(duì)應(yīng)的存放位置處的標(biāo)識(shí)加1,其中,未存放有數(shù)值的存放位置處的標(biāo)識(shí)初始值為0,其 中,該標(biāo)識(shí)對(duì)應(yīng)的值用于表征對(duì)應(yīng)存放位置處存放的數(shù)值個(gè)數(shù)。
[0020] 優(yōu)選地,進(jìn)一步包括:
[0021] 初始化操作單元,用于對(duì)所有數(shù)值進(jìn)行初始化操作,以使初始化操作后的所有數(shù) 值都是整數(shù)。
[0022] 優(yōu)選地,進(jìn)一步包括:
[0023] 過濾單元,用于利用HashSet容器、SortedSet容器、TreeSet容器或EnumSet容器 對(duì)所有數(shù)值中的重復(fù)數(shù)值進(jìn)行過濾。
[0024] 優(yōu)選地,進(jìn)一步包括:記錄單元,用于記錄計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值 的開始時(shí)間點(diǎn)以及記錄將所有數(shù)值中的最后一個(gè)數(shù)值存放到所述數(shù)組中與該最后一個(gè)數(shù) 值相等的位置序號(hào)所對(duì)應(yīng)的存放位置處的時(shí)間點(diǎn),以確定海量數(shù)據(jù)的處理時(shí)間段。
[0025] 優(yōu)選地,進(jìn)一步包括:
[0026] 取值單元,用于依次從所述數(shù)組中每一個(gè)存放位置處取出不為0的數(shù)值,其中,在 取值過程中,若存放位置處的標(biāo)識(shí)大于1,則依次從該存放位置處取出與該存放位置的標(biāo)識(shí) 相等個(gè)數(shù)的數(shù)值,并將依次取出的不為〇的數(shù)值存入列表中。
[0027] 本發(fā)明實(shí)施例提供了一種海量數(shù)據(jù)的處理方法及裝置,通過計(jì)算出所有待處理數(shù) 據(jù)分別對(duì)應(yīng)的數(shù)值,并根據(jù)所有數(shù)值中的最大值建立數(shù)組,以保證該數(shù)組中至少包括與所 有數(shù)值中最大值對(duì)應(yīng)的數(shù)值相等個(gè)數(shù)的存放位置,每一個(gè)存放位置對(duì)應(yīng)該存放位置在數(shù)組 中的位置序號(hào),并將每一個(gè)數(shù)值存放到數(shù)組中與當(dāng)前數(shù)值相等的位置序號(hào)所對(duì)應(yīng)的存放位 置處,并在對(duì)應(yīng)的存放位置處的標(biāo)識(shí)加1,如此,在將所有數(shù)值都存放到數(shù)組中之后,即完成 對(duì)所有數(shù)值的處理,該處理過程相對(duì)于現(xiàn)有技術(shù)而言,無(wú)需重復(fù)的走訪數(shù)值,而是只遍歷一 遍,并存放到數(shù)組中,即可完成對(duì)海量數(shù)據(jù)的處理,從而減小了數(shù)據(jù)處理的耗時(shí)、提高了數(shù) 據(jù)處理的效率。
【附圖說明】
[0028] 圖1是本發(fā)明實(shí)施例提供的方法流程圖;
[0029] 圖2是本發(fā)明另一實(shí)施例提供的方法流程圖;
[0030]圖3是本發(fā)明實(shí)施例提供的數(shù)組結(jié)構(gòu)示意圖;
[0031]圖4是本發(fā)明實(shí)施例提供的海量數(shù)據(jù)的處理裝置所在設(shè)備的硬件架構(gòu)圖;
[0032]圖5是本發(fā)明實(shí)施例提供的海量數(shù)據(jù)的處理裝置結(jié)構(gòu)示意圖;
[0033]圖6是本發(fā)明另一實(shí)施例提供的海量數(shù)據(jù)的處理裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0034]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述。顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒?發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí) 施例,都屬于本發(fā)明保護(hù)的范圍。
[0035] 如圖1所示,本發(fā)明實(shí)施例提供了一種海量數(shù)據(jù)的處理方法,該方法可以包括以 下步驟:
[0036] 步驟101:計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值。
[0037] 步驟102:根據(jù)所有數(shù)值中的最大值,建立數(shù)組;其中,數(shù)組中至少包括與最大值 對(duì)應(yīng)的數(shù)值相等的個(gè)數(shù)的存放位置,每一個(gè)存放位置對(duì)應(yīng)該存放位置在數(shù)組中的位置序 號(hào)。
[0038] 步驟103:遍歷所有數(shù)值,針對(duì)遍歷到的每一個(gè)數(shù)值,執(zhí)行如下操作:將當(dāng)前數(shù)值 存放到數(shù)組中與當(dāng)前數(shù)值相等的位置序號(hào)所對(duì)應(yīng)的存放位置處,并在對(duì)應(yīng)的存放位置處的 標(biāo)識(shí)加1,其中,未存放有數(shù)值的存放位置處的標(biāo)識(shí)初始值為0,其中,該標(biāo)識(shí)對(duì)應(yīng)的值用于 表征對(duì)應(yīng)存放位置處存放的數(shù)值個(gè)數(shù)。
[0039] 根據(jù)本方案,通過計(jì)算出所有待處理數(shù)據(jù)分別對(duì)應(yīng)的數(shù)值,并根據(jù)所有數(shù)值中的 最大值建立數(shù)組,以保證該數(shù)組中至少包括與所有數(shù)值中最大值對(duì)應(yīng)的數(shù)值相等個(gè)數(shù)的存 放位置,每一個(gè)存放位置對(duì)應(yīng)該存放位置在數(shù)組中的位置序號(hào),并將每一個(gè)數(shù)值存放到數(shù) 組中與當(dāng)前數(shù)值相等的位置序號(hào)所對(duì)應(yīng)的存放位置處,并在對(duì)應(yīng)的存放位置處的標(biāo)識(shí)加1, 如此,在將所有數(shù)值都存放到數(shù)組中之后,即完成對(duì)所有數(shù)值的處理,該處理過程相對(duì)于現(xiàn) 有技術(shù)而言,無(wú)需重復(fù)的走訪數(shù)值,而是只遍歷一遍,并存放到數(shù)組中,即可完成對(duì)海量數(shù) 據(jù)的處理,從而減小了數(shù)據(jù)處理的耗時(shí)、提高了