欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于大數(shù)據(jù)隨機(jī)抽樣的方法和系統(tǒng)的制作方法

文檔序號:8905285閱讀:550來源:國知局
一種用于大數(shù)據(jù)隨機(jī)抽樣的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開涉及一種隨機(jī)抽樣方法和系統(tǒng),具體地,涉及一種用于大數(shù)據(jù)隨機(jī)抽樣的方法和系統(tǒng)。
【背景技術(shù)】
[0002]在做市場調(diào)查的時候,需要從一個很大的樣本庫中隨機(jī)篩選出一定量的樣本來做調(diào)查,即需要隨機(jī)抽樣調(diào)查。存在眾多分布式存儲系統(tǒng)。例如,HBase是一個no-sql (不支持sql條件查詢)的key-value (鍵值)分布式存儲系統(tǒng),在大數(shù)據(jù)存取的應(yīng)用場景中表現(xiàn)十分優(yōu)異。
[0003]當(dāng)我們在進(jìn)行隨機(jī)抽樣調(diào)查時,如果樣本庫的量級達(dá)到了億級別,我們可以選擇具有海量存儲能力的數(shù)據(jù)庫(例如HBase)來存取數(shù)據(jù)。從而實現(xiàn)高效的隨機(jī)抽樣,得到所需要的樣本來做調(diào)查。
[0004]現(xiàn)有技術(shù)中存在多種隨機(jī)抽樣的方案。第一種方案是將大數(shù)據(jù)存儲在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中,利用分庫分表的方式,將數(shù)據(jù)離散存儲在不同庫和表中。需要隨機(jī)抽樣時,根據(jù)所選的樣本數(shù)據(jù),通過先把所有樣本數(shù)據(jù)讀取出來,然后針對每個樣本,通過隨機(jī)函數(shù)(Random)生成一個隨機(jī)數(shù),如果隨機(jī)數(shù)匹配一個值,就采用這個樣本,以這種方式來達(dá)到隨機(jī)抽樣的效果。該方案存在以下缺陷:傳統(tǒng)的數(shù)據(jù)庫就需要用到分庫分表(將數(shù)據(jù)分塊存儲到不同的庫以及不同的表中)等技術(shù),當(dāng)數(shù)據(jù)量上億后,其數(shù)據(jù)存取量大,可維護(hù)性低,擴(kuò)展性低,技術(shù)難度高。
[0005]第二種方案是將數(shù)據(jù)存儲到nosql的分布式存儲系統(tǒng)(例如HBase)中,需要隨機(jī)抽樣時,獲取所有滿足條件的樣本,然后進(jìn)行概率抽樣(同關(guān)系型數(shù)據(jù)庫方法相同)。該方案利用了存儲系統(tǒng)自身的分布式優(yōu)勢,在存取方面獲得良好效果。但該方案存在以下缺陷:由于需要掃描所有樣本數(shù)據(jù),所以當(dāng)樣本庫中的樣本量達(dá)到億級別時,進(jìn)行一次隨機(jī)抽樣很耗時。

【發(fā)明內(nèi)容】

[0006]基于以上對現(xiàn)有技術(shù)方案的描述,在現(xiàn)有技術(shù)中存在需要提高從大數(shù)據(jù)樣本中的抽樣的效率的技術(shù)問題。
[0007]具體地,根據(jù)本發(fā)明的第一方面,提供了一種數(shù)據(jù)庫中的隨機(jī)抽樣方法,所述方法包括以下步驟:步驟a:將多個記錄分為多個組;步驟b:隨機(jī)抽取所述多個組中的一個或多個組;以及步驟c:并在所隨機(jī)抽取的所述一個或多個組中,隨機(jī)抽取要抽取數(shù)量的記錄。
[0008]在一個實施例中,所述多個組中的每一個組內(nèi)記錄的數(shù)量是相等的。
[0009]在一個實施例中,步驟a還包括:為所述多個組中的每一個組中的特定記錄創(chuàng)建索引。
[0010]在一個實施例中,所述特定記錄是所述多個組中的每一個組中的第一個記錄。[0011 ] 在一個實施例中,創(chuàng)建索引包括將所述索引存放在數(shù)據(jù)庫。
[0012]在一個實施例中,創(chuàng)建所述索引的周期是根據(jù)任務(wù)執(zhí)行的周期確定的。
[0013]在一個實施例中,步驟c還包括:基于要抽取的記錄的數(shù)量,產(chǎn)生第一隨機(jī)數(shù);對所隨機(jī)抽取的所述一個或多個組中的數(shù)據(jù)進(jìn)行逐一掃描;對于每一個所掃描的數(shù)據(jù),基于要抽取的記錄的數(shù)量,產(chǎn)生第二隨機(jī)數(shù);如果所述第一隨機(jī)數(shù)等于所述第二隨機(jī)數(shù),則抽取所述記錄。
[0014]在一個實施例中,基于要抽取的記錄的數(shù)量產(chǎn)生第一隨機(jī)數(shù)還基于所述多個記錄的數(shù)量;基于要抽取的記錄的數(shù)量產(chǎn)生第二隨機(jī)數(shù)還基于所述多個記錄的數(shù)量。
[0015]在一個實施例中,基于所述要抽取的記錄的數(shù)量和所述多個記錄的數(shù)量產(chǎn)生第一隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于所述多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第一隨機(jī)數(shù);基于所述要抽取的記錄的數(shù)量和所述多個記錄的數(shù)量產(chǎn)生第二隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于所述多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第二隨機(jī)數(shù)。
[0016]根據(jù)本發(fā)明的第二方面,提供了一種用于數(shù)據(jù)庫中的隨機(jī)抽樣系統(tǒng),所述系統(tǒng)包括:分組裝置,被配置為:將多個記錄分為多個組;隨機(jī)抽取裝置,被配置為:隨機(jī)抽取所述多個組中的一個或多個組,并在所隨機(jī)抽取的所述一個或多個組中,隨機(jī)抽取要抽取數(shù)量的記錄。
[0017]在一個實施例中,所述多個組中的每一個組內(nèi)記錄的數(shù)量是相等的。
[0018]在一個實施例中,所述分組裝置還被配置為:為所述多個組中的每一個組中的特定記錄創(chuàng)建索引。
[0019]在一個實施例中,所述特定記錄是所述多個組中的每一個組中的第一個記錄。
[0020]在一個實施例中,創(chuàng)建索引包括將所述索引存放在數(shù)據(jù)庫。
[0021]在一個實施例中,創(chuàng)建所述索引的周期是根據(jù)任務(wù)執(zhí)行的周期確定的。
[0022]在一個實施例中,所述隨機(jī)抽取裝置,被配置為:基于要抽取的記錄的數(shù)量,產(chǎn)生第一隨機(jī)數(shù);對所隨機(jī)抽取的所述一個或多個組中的數(shù)據(jù)進(jìn)行逐一掃描;對于每一個所掃描的數(shù)據(jù),基于要抽取的記錄的數(shù)量,產(chǎn)生第二隨機(jī)數(shù);如果所述第一隨機(jī)數(shù)等于所述第二隨機(jī)數(shù),則抽取所述記錄。
[0023]在一個實施例中,基于要抽取的記錄的數(shù)量產(chǎn)生第一隨機(jī)數(shù)還基于所述多個記錄的數(shù)量;基于要抽取的記錄的數(shù)量產(chǎn)生第二隨機(jī)數(shù)還基于所述多個記錄的數(shù)量。
[0024]在一個實施例中,基于所述要抽取的記錄的數(shù)量和所述多個記錄的數(shù)量產(chǎn)生第一隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于所述多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第一隨機(jī)數(shù);基于所述要抽取的記錄的數(shù)量和所述多個記錄的數(shù)量產(chǎn)生第二隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于所述多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第二隨機(jī)數(shù)。
[0025]根據(jù)本發(fā)明的第三方面,提供了一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)包括由處理器執(zhí)行的指令,所述指令被處理器執(zhí)行以使所述處理器實現(xiàn)根據(jù)所述第一方面中所述的方法。
[0026]根據(jù)本公開,通過對大數(shù)據(jù)創(chuàng)建索引,提升抽樣效率,實現(xiàn)大數(shù)據(jù)隨機(jī)抽樣。
【附圖說明】
[0027]圖1是示出了根據(jù)本公開實施例的HBase的一個示例。
[0028]圖2是示出了根據(jù)本公開實施例的一種數(shù)據(jù)庫中的隨機(jī)抽樣方法。
[0029]圖3是示出了根據(jù)本公開實施例的數(shù)據(jù)庫中的隨機(jī)抽樣方法中的分組步驟。
[0030]圖4是示出了根據(jù)本公開實施例的數(shù)據(jù)庫中的隨機(jī)抽樣方法中的隨機(jī)抽樣步驟。
[0031]圖5是示出了根據(jù)本公開實施例的一種用于數(shù)據(jù)庫中的隨機(jī)抽樣系統(tǒng)。
【具體實施方式】
[0032]現(xiàn)在結(jié)合圖1和圖2描述本公開的隨機(jī)抽樣方法的一個實施例。在眾多分布式存儲系統(tǒng)中,HBase是適用于大數(shù)據(jù)存取的應(yīng)用場景的一個示例。HBase是一個分布式的鍵值存取數(shù)據(jù)庫,其不支持sql條件查詢,但能通過主鍵查詢,或者按主鍵的范圍查詢。
[0033]圖1是示出了根據(jù)本公開的實施例的HBase的一個示例。如圖1所示,主鍵為身份證號,主鍵和數(shù)據(jù)庫中的主鍵意義一樣。列簇是可以看做是一個管理單元,把相關(guān)性比較緊密的幾列放在一起,以方便存取。在本實施例中,僅存在一個列簇。本公開可以包括更多個列簇的實施例。列簇下方的列類似于數(shù)據(jù)庫中的字段,只是HBase可以動態(tài)添加一列。每一行數(shù)據(jù)代表了一個樣本數(shù)據(jù)。在本實施例中,數(shù)據(jù)庫的表中存在有I億條數(shù)據(jù)。
[0034]圖2是示出了根據(jù)本公開的實施例的一種數(shù)據(jù)庫中的隨機(jī)抽樣方法。在步驟S201中,將多個記錄分為多個組。然后,在步驟S202,隨機(jī)抽取多個組中的一個或多個組。在所隨機(jī)抽取的一個或多個組中,隨機(jī)抽取要抽取數(shù)量的記錄(步驟S203)。
[0035]以下描述根據(jù)本公開的一種數(shù)據(jù)庫中的隨機(jī)抽樣方法的另一實施例。本實施例的背景是常見的一種調(diào)查,該調(diào)查需要從I億人中隨機(jī)抽出1000人以參與此調(diào)查。在本實施例中,假定I億人的姓名和/或聯(lián)系方式等信息都已經(jīng)按照如圖1所示的數(shù)據(jù)項形式(包括主鍵和列簇)保存在分布式存儲系統(tǒng)(例如HBase)中。
[0036]圖3是示出了根據(jù)本公開的實施例的數(shù)據(jù)庫中的隨機(jī)抽樣方法中的分組步驟。首先,將所有數(shù)據(jù)項分為數(shù)量相等的多個組,每一個組都包含100萬條記錄,如步驟S301所示。然后,為多個組中的每一個組中的特定記錄創(chuàng)建索引。在本實施例中,為該樣本庫中的數(shù)據(jù)每100萬記錄中的第一個記錄創(chuàng)建索引(步驟S302),并將該索引存放在數(shù)據(jù)庫中(步驟S303)。即掃描到第100萬個記錄的時候,取出主鍵,并記錄下主鍵與第100萬個記錄之間的映射關(guān)系。然后接著掃描到第200萬個記錄(步驟305),并取出主鍵然后記錄該主鍵和第200萬個記錄之間的映射。依次類推,直到對所有I億條數(shù)據(jù)中的每100萬條記錄的主鍵進(jìn)行掃描為止(步驟304)。上述創(chuàng)建索引的周期是根據(jù)任務(wù)執(zhí)行的周期確定的,即創(chuàng)建索引的步驟可以根據(jù)數(shù)據(jù)的變更情況來確定。例如,如果每一個月對數(shù)據(jù)進(jìn)行一次更新,則可以每一個月執(zhí)行一次創(chuàng)建索引的任務(wù)。
[0037]圖4是示出了根據(jù)本公開的實施例的數(shù)據(jù)庫中的隨機(jī)抽樣方法中的隨機(jī)抽樣步驟。本實施例中的數(shù)據(jù)庫中存在100個組,每個組包括100萬條記錄。首先,隨機(jī)抽取多個組中的一個組。具體地,在步驟S401中,隨機(jī)抽取多個組中的一個組。隨機(jī)抽取這100個組中的一個(既獲取得到主鍵的開始和結(jié)束范圍,如隨機(jī)到第6個組,則主鍵范圍就是第五個100萬個記錄的主鍵到第六個100萬個記錄的主鍵)。由于是隨機(jī)到某個百萬區(qū)間,所以對每個樣本來說,被選到的概率是一樣的。然后,在所隨機(jī)抽取的一個組中,隨機(jī)抽取要抽取數(shù)量的記錄。具體抽取方法可以是:在步驟S402中,產(chǎn)生第一隨機(jī)數(shù)。然后,對所隨機(jī)抽取的一個組中的數(shù)據(jù)進(jìn)行逐一掃描(步驟S403)。接著,在步驟S404中,對于每一個所掃描的數(shù)據(jù),產(chǎn)生第二隨機(jī)數(shù)。判斷如果第一隨機(jī)數(shù)等于第二隨機(jī)數(shù)(步驟S405中是),則抽取記錄(步驟S406)。在以上步驟中,產(chǎn)生第一隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第一隨機(jī)數(shù);產(chǎn)生第二隨機(jī)數(shù)是隨機(jī)產(chǎn)生小于等于多個記錄的數(shù)量除以要抽取的記錄的數(shù)量的第二隨機(jī)數(shù)。具體地,在本實施例中,根據(jù)我們需要抽樣
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
河西区| 泸溪县| 获嘉县| 建瓯市| 莒南县| 延庆县| 新泰市| 绵阳市| 中阳县| 保定市| 大埔县| 林芝县| 崇阳县| 宁陕县| 青海省| 海盐县| 林周县| 武山县| 册亨县| 大冶市| 仁布县| 永兴县| 运城市| 张掖市| 怀来县| 乌兰浩特市| 宁国市| 巴彦淖尔市| 攀枝花市| 曲靖市| 泰宁县| 白朗县| 唐山市| 大宁县| 西峡县| 崇礼县| 肇庆市| 华容县| 元谋县| 徐汇区| 山阳县|