一种用于大数据随机抽样的方法和系统技术方案

技术编号:11993401 阅读:97 留言:0更新日期:2015-09-02 21:23
本申请提供了一种数据库中的随机抽样方法,该方法包括以下步骤:将多个记录分为多个组;随机抽取该多个组中的一个或多个组;以及在所随机抽取的该一个或多个组中,随机抽取要抽取数量的记录。此外,本申请还提供了一种用于数据库中的随机抽样系统和计算机可读存储介质。

【技术实现步骤摘要】

本公开涉及一种随机抽样方法和系统,具体地,涉及一种用于大数据随机抽样的方法和系统
技术介绍
在做市场调查的时候,需要从一个很大的样本库中随机筛选出一定量的样本来做调查,即需要随机抽样调查。存在众多分布式存储系统。例如,HBase是一个no-sql (不支持sql条件查询)的key-value (键值)分布式存储系统,在大数据存取的应用场景中表现十分优异。当我们在进行随机抽样调查时,如果样本库的量级达到了亿级别,我们可以选择具有海量存储能力的数据库(例如HBase)来存取数据。从而实现高效的随机抽样,得到所需要的样本来做调查。现有技术中存在多种随机抽样的方案。第一种方案是将大数据存储在传统的关系型数据库中,利用分库分表的方式,将数据离散存储在不同库和表中。需要随机抽样时,根据所选的样本数据,通过先把所有样本数据读取出来,然后针对每个样本,通过随机函数(Random)生成一个随机数,如果随机数匹配一个值,就采用这个样本,以这种方式来达到随机抽样的效果。该方案存在以下缺陷:传统的数据库就需要用到分库分表(将数据分块存储到不同的库以及不同的表中)等技术,当数据量上亿后,其数据存取量大,可维护性低,扩展性低,技术难度高。第二种方案是将数据存储到nosql的分布式存储系统(例如HBase)中,需要随机抽样时,获取所有满足条件的样本,然后进行概率抽样(同关系型数据库方法相同)。该方案利用了存储系统自身的分布式优势,在存取方面获得良好效果。但该方案存在以下缺陷:由于需要扫描所有样本数据,所以当样本库中的样本量达到亿级别时,进行一次随机抽样很耗时。【
技术实现思路
】基于以上对现有技术方案的描述,在现有技术中存在需要提高从大数据样本中的抽样的效率的技术问题。具体地,根据本专利技术的第一方面,提供了一种数据库中的随机抽样方法,所述方法包括以下步骤:步骤a:将多个记录分为多个组;步骤b:随机抽取所述多个组中的一个或多个组;以及步骤c:并在所随机抽取的所述一个或多个组中,随机抽取要抽取数量的记录。在一个实施例中,所述多个组中的每一个组内记录的数量是相等的。在一个实施例中,步骤a还包括:为所述多个组中的每一个组中的特定记录创建索引。在一个实施例中,所述特定记录是所述多个组中的每一个组中的第一个记录。 在一个实施例中,创建索引包括将所述索引存放在数据库。在一个实施例中,创建所述索引的周期是根据任务执行的周期确定的。在一个实施例中,步骤c还包括:基于要抽取的记录的数量,产生第一随机数;对所随机抽取的所述一个或多个组中的数据进行逐一扫描;对于每一个所扫描的数据,基于要抽取的记录的数量,产生第二随机数;如果所述第一随机数等于所述第二随机数,则抽取所述记录。在一个实施例中,基于要抽取的记录的数量产生第一随机数还基于所述多个记录的数量;基于要抽取的记录的数量产生第二随机数还基于所述多个记录的数量。在一个实施例中,基于所述要抽取的记录的数量和所述多个记录的数量产生第一随机数是随机产生小于等于所述多个记录的数量除以要抽取的记录的数量的第一随机数;基于所述要抽取的记录的数量和所述多个记录的数量产生第二随机数是随机产生小于等于所述多个记录的数量除以要抽取的记录的数量的第二随机数。根据本专利技术的第二方面,提供了一种用于数据库中的随机抽样系统,所述系统包括:分组装置,被配置为:将多个记录分为多个组;随机抽取装置,被配置为:随机抽取所述多个组中的一个或多个组,并在所随机抽取的所述一个或多个组中,随机抽取要抽取数量的记录。在一个实施例中,所述多个组中的每一个组内记录的数量是相等的。在一个实施例中,所述分组装置还被配置为:为所述多个组中的每一个组中的特定记录创建索引。在一个实施例中,所述特定记录是所述多个组中的每一个组中的第一个记录。在一个实施例中,创建索引包括将所述索引存放在数据库。在一个实施例中,创建所述索引的周期是根据任务执行的周期确定的。在一个实施例中,所述随机抽取装置,被配置为:基于要抽取的记录的数量,产生第一随机数;对所随机抽取的所述一个或多个组中的数据进行逐一扫描;对于每一个所扫描的数据,基于要抽取的记录的数量,产生第二随机数;如果所述第一随机数等于所述第二随机数,则抽取所述记录。在一个实施例中,基于要抽取的记录的数量产生第一随机数还基于所述多个记录的数量;基于要抽取的记录的数量产生第二随机数还基于所述多个记录的数量。在一个实施例中,基于所述要抽取的记录的数量和所述多个记录的数量产生第一随机数是随机产生小于等于所述多个记录的数量除以要抽取的记录的数量的第一随机数;基于所述要抽取的记录的数量和所述多个记录的数量产生第二随机数是随机产生小于等于所述多个记录的数量除以要抽取的记录的数量的第二随机数。根据本专利技术的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括由处理器执行的指令,所述指令被处理器执行以使所述处理器实现根据所述第一方面中所述的方法。根据本公开,通过对大数据创建索引,提升抽样效率,实现大数据随机抽样。【附图说明】图1是示出了根据本公开实施例的HBase的一个示例。图2是示出了根据本公开实施例的一种数据库中的随机抽样方法。图3是示出了根据本公开实施例的数据库中的随机抽样方法中的分组步骤。图4是示出了根据本公开实施例的数据库中的随机抽样方法中的随机抽样步骤。图5是示出了根据本公开实施例的一种用于数据库中的随机抽样系统。【具体实施方式】现在结合图1和图2描述本公开的随机抽样方法的一个实施例。在众多分布式存储系统中,HBase是适用于大数据存取的应用场景的一个示例。HBase是一个分布式的键值存取数据库,其不支持sql条件查询,但能通过主键查询,或者按主键的范围查询。图1是示出了根据本公开的实施例的HBase的一个示例。如图1所示,主键为身份证号,主键和数据库中的主键意义一样。列簇是可以看做是一个管理单元,把相关性比较紧密的几列放在一起,以方便存取。在本实施例中,仅存在一个列簇。本公开可以包括更多个列簇的实施例。列簇下方的列类似于数据库中的字段,只是HBase可以动态添加一列。每一行数据代表了一个样本数据。在本实施例中,数据库的表中存在有I亿条数据。图2是示出了根据本公开的实施例的一种数据库中的随机抽样方法。在步骤S201中,将多个记录分为多个组。然后,在步骤S202,随机抽取多个组中的一个或多个组。在所随机抽取的一个或多个组中,随机抽取要抽取数量的记录(步骤S203)。以下描述根据本公开的一种数据库中的随机抽样方法的另一实施例。本实施例的背景是常见的一种调查,该调查需要从I亿人中随机抽出1000人以参与此调查。在本实施例中,假定I亿人的姓名和/或联系方式等信息都已经按照如图1所示的数据项形式(包括主键和列簇)保存在分布式存储系统(例如HBase)中。图3是示出了根据本公开的实施例的数据库中的随机抽样方法中的分组步骤。首先,将所有数据项分为数量相等的多个组,每一个组都包含100万条记录,如步骤S301所示。然后,为多个组中的每一个组中的特定记录创建索引。在本实施例中,为该样本库中的数据每100万记录中的第一个记录创建索引(步骤S302),并将该索引存放在数据库中(步骤S303)。即扫描到第100万个记录的时候,取本文档来自技高网...

【技术保护点】
一种数据库中的随机抽样方法,所述方法包括以下步骤:步骤a:将多个记录分为多个组;步骤b:随机抽取所述多个组中的一个或多个组;以及步骤c:在所随机抽取的所述一个或多个组中,随机抽取要抽取数量的记录。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐平梁竹肖丹王威
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1