CN109241205A - 一种可用于大批量生成关系型模拟数据的方法 - Google Patents
一种可用于大批量生成关系型模拟数据的方法 Download PDFInfo
- Publication number
- CN109241205A CN109241205A CN201811393036.5A CN201811393036A CN109241205A CN 109241205 A CN109241205 A CN 109241205A CN 201811393036 A CN201811393036 A CN 201811393036A CN 109241205 A CN109241205 A CN 109241205A
- Authority
- CN
- China
- Prior art keywords
- field
- data
- local file
- production methods
- volume production
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000004519 manufacturing process Methods 0.000 title claims abstract description 15
- 238000004088 simulation Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 claims description 3
- 239000000203 mixture Substances 0.000 abstract description 4
- 238000013519 translation Methods 0.000 abstract description 2
- 238000012360 testing method Methods 0.000 description 11
- 241001269238 Data Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种可用于大批量生成关系型模拟数据的方法,在运行过程中首先根据数据模板中的分区字段定义,生成一个或者多个分区字段构成的序列,从序列的第一个分区集合开始,通过模拟器以及逻辑规则生成一个本地文件,待该本地文件导入到Hive仓库指定位置后,进入第二个分区集合开始进行模拟,此时将会生成第二个本地文件。第二个本地文件将逐行参照首个本地文件,平移不变的关键字段,在符合逻辑规则的前提下改变剩余的字段。
Description
技术领域
本发明涉及数据模拟技术领域,尤其涉及一种可用于大批量生成关系型模拟数据的方法。
背景技术
现有技术中手工编写的测试数据量往往较小,距离生产环境实际的数据量存在若干个数量级的差距;手工编写的测试数据经过实际测试,往往会发现存在脏数据,即不满足约束条件或者是不完整的数据。而通过手工调整这些脏数据,代价巨大却收效甚微;根据以往大数据项目上线经验,在生产环境上运行后,经常出现测试环境中无法复现的问题。例如可能存在分布不均衡的超大数据集导致计算任务在shuffle期间运行失败,而测试环境因为手工无法生成如此大量的数据集而难以及早发现此类隐藏问题。
发明内容
基于现有技术中的缺陷,本发明一种可用于大批量生成关系型模拟数据的方法,具体方案是包括以下步骤:
S1:采用excel文件建立数据模板;
S2:根据标准式数据模板建立数据字典,在数据字典中对部分枚举类型的字段进行预先配置;
S3:根据数据字典确定某字段的生成规则;
S4:根据数据模板的定义创建并维护模拟器实例;
S5:对同一张hive表中的字段进行分区存储;根据数据模板中的分区字段定义生成一个或多个分区字段构成的序列,从序列的第一个分区集合开始通过模拟器以及逻辑规则生成一个本地文件,
S6:通过Spark批处理任务将本地文件导入到hive仓库中。
进一步的,采用随机指定的方式对枚举类型的字段进行模拟。
所述数据模板对hive表的字段名、字段类型、字段模拟生成规则、字段和字段之间的联系进行定义。
由于采用了上述技术方案,本发明提供的一种可用于大批量生成关系型模拟数据的方法,本方法根据需求方提供的关系型数据结构,在测试环境通过手工编写少量的测试数据存入hive仓库,并进行后续的功能和性能测试。本发明根据需求方提供的关系型数据结构为基础生成大批量即以亿条记录为单位的测试数据集;既可以满足数据中的各种约束条件,例如字段唯一性、表和表之间的一对一、一对多、多对多等关系约束,同时还满足数据中的各种约束条件,例如字段唯一性、表和表之间的一对一、一对多、多对多等关系约束。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法的流程图。
图2为本发明方法的实施例示意图。
图3为本发明方法的实施例示意图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
如图1-图3所示的一种可用于大批量生成关系型模拟数据的方法,包括以下步骤:
S1:采用excel文件建立数据模板;其中该模板中定义了hive表的字段名、字段类型、字段模拟生成规则,以及字段和字段之间的联系。
S2:根据标准式数据模板建立数据字典,在数据字典中对部分枚举类型的字段进行预先配置,
S3:根据数据字典确定某字段的生成规则;其中采用多种模拟器来确定字段的生成规则。模拟器是一个可扩展的抽象逻辑单元,用于确定某字段的生成规则。本发明工具已经提供了一批常用的模拟器实例和模拟器工厂,使用者可以根据项目实际情况自行扩展模拟器实例。本发明工具提供的主要模拟器实例:
(1)姓名模拟器:可以根据事先配置好的中文字库,模拟出中文姓名;
(2)日期模拟器:可以根据指定的起始和结束日期,在这期间模拟出随机日期;
(3)字典模拟器:可以根据事先配置好的字典列表,随机选择其中的枚举值;
(4)数字模拟器:可以根据指定的取值区间,随机生成数字;
(5)联动模拟器:将两个或者两个以上的字段组成联动字段,采用联动式的字典模拟器(目前仅支持联动字典,例如省/市/区三级字典联动)随机生成联动枚举值;
(6)序列模拟器:可以按照指定区间的最小值开始,按顺序生成数字直到区间最大值结束。
S4:根据数据模板的定义创建并维护模拟器实例;在实际的模拟数据生产过程中,根据数据模板中的定义,由模拟器工厂创建并维护模拟器实例。
S5:对同一张hive表中的字段进行分区存储;根据数据模板中的分区字段定义生成一个或多个分区字段构成的序列,从序列的第一个分区集合开始通过模拟器以及逻辑规则生成一个本地文件。
进一步的,同一张hive表不同分区,除了分区字段本身的变化外,普通字段取值有以下规律:
(1)部分关键字取值是固定的,例如用户的ID、手机号等。这些字段不能随着分区的改变而改变,否则将会模拟出脏数据;
(2)不同分区的关键字段并非一一对应,总是存在少量数据不能完全重叠的部分,例如加入了新用户的数据或者缺失了部分老用户的数据;
(3)部分字段随着分区的增长(分区通常含有日期或者月份这样的增长字段),取值必须渐渐变大。例如上网流量日表,后一天的已使用流量总是要大于前一天的值;
(4)不管分区字段如何变化,分区以内部分字段是存在一定的逻辑关系的,例如字段1+字段2必须小于字段3,否则的话将会破坏数据逻辑规则。
S6:通过Spark批处理任务将本地文件导入到hive仓库中。以hive表分区为单位,生,成并落地到本地磁盘文件,通过Spark批处理任务或者ThriftServer的JDBC接口,将该本地文件导入到hive仓库中。
本发明公开的一种可用于大批量生成关系型模拟数据的方法,在运行过程中首先根据数据模板中的分区字段定义,生成一个或者多个分区字段构成的序列,从序列的第一个分区集合开始,通过模拟器以及逻辑规则生成一个本地文件,待该本地文件导入到Hive仓库指定位置后,进入第二个分区集合开始进行模拟,此时将会生成第二个本地文件。第二个本地文件将逐行参照首个本地文件,平移不变的关键字段,在符合逻辑规则的前提下改变剩余的字段。第二个本地文件生成后,导入Hive仓库指定位置,并且将首个本地文件予以删除,节约本地磁盘空间。接下来以第二个本地文件为参照进行第三个本地文件模拟生成,后续以此类推。
因此本方法具有如下效果:本方法的测试环境可用性增强,能够在这个环境上及早发现项目中存在的问题点;另外经过简单的模拟器和字段规则定制,在测试环境中模拟出生产环境中的数据特点,方便开发人员进行问题复现和定位,同时可以在开发之前模拟出测试数据,便于开发方案的制定,有效缩短项目开发和上线周期。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种可用于大批量生成关系型模拟数据的方法,其特征在于包括以下步骤:
S1:采用excel文件建立数据模板;
S2:根据标准式数据模板建立数据字典,在数据字典中对部分枚举类型的字段进行预先配置;
S3:根据数据字典确定某字段的生成规则;
S4:根据数据模板的定义创建并维护模拟器实例;
S5:对同一张hive表中的字段进行分区存储;根据数据模板中的分区字段定义生成一个或多个分区字段构成的序列,从序列的第一个分区集合开始通过模拟器以及逻辑规则生成一个本地文件,
S6:通过Spark批处理任务将本地文件导入到hive仓库中。
2.根据权利要求1所述的一种可用于大批量生成关系型模拟数据的方法,其特征还在于:采用随机指定的方式对枚举类型的字段进行模拟。
3.根据权利要求1所述的一种可用于大批量生成关系型模拟数据的方法,其特征还在于:所述数据模板对hive表的字段名、字段类型、字段模拟生成规则、字段和字段之间的联系进行定义。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811393036.5A CN109241205A (zh) | 2018-11-21 | 2018-11-21 | 一种可用于大批量生成关系型模拟数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811393036.5A CN109241205A (zh) | 2018-11-21 | 2018-11-21 | 一种可用于大批量生成关系型模拟数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109241205A true CN109241205A (zh) | 2019-01-18 |
Family
ID=65076228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811393036.5A Pending CN109241205A (zh) | 2018-11-21 | 2018-11-21 | 一种可用于大批量生成关系型模拟数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241205A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367234A (zh) * | 2020-10-27 | 2021-02-12 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN104615667A (zh) * | 2015-01-13 | 2015-05-13 | 联动优势电子商务有限公司 | 一种基础数据生成方法、测试用数据生成方法及其装置 |
CN107273195A (zh) * | 2017-05-24 | 2017-10-20 | 上海艾融软件股份有限公司 | 一种大数据的批处理方法、装置及计算机系统 |
-
2018
- 2018-11-21 CN CN201811393036.5A patent/CN109241205A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN104615667A (zh) * | 2015-01-13 | 2015-05-13 | 联动优势电子商务有限公司 | 一种基础数据生成方法、测试用数据生成方法及其装置 |
CN107273195A (zh) * | 2017-05-24 | 2017-10-20 | 上海艾融软件股份有限公司 | 一种大数据的批处理方法、装置及计算机系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367234A (zh) * | 2020-10-27 | 2021-02-12 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
CN112367234B (zh) * | 2020-10-27 | 2022-04-29 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957957B (zh) | 测试用例的获取方法和装置 | |
CN104252481B (zh) | 主从数据库一致性的动态校验方法和装置 | |
CN108536752B (zh) | 一种数据同步方法、装置和设备 | |
CN109271326B (zh) | 云数据库的测试方法及其装置、设备和存储介质 | |
CN104461693B (zh) | 一种桌面云计算环境下的虚拟机更新方法和系统 | |
TWI512513B (zh) | 用於編輯或產生一示意圖之方法及非暫時性電腦可讀取媒體以及用於產生一示意圖之系統 | |
US7562367B1 (en) | Sorted-tree-based event queue for discrete event simulators | |
CN104765794B (zh) | 一种数据库分区方法及装置 | |
CN104866498A (zh) | 一种信息处理方法及装置 | |
CN110442847B (zh) | 基于代码仓库过程管理的代码相似性检测方法及装置 | |
CN103455589B (zh) | 产品工厂模式下的产品数据迁移方法、装置及系统 | |
CN107562931A (zh) | 数据抽取系统和数据抽取方法 | |
CN106202529A (zh) | 一种页面渲染方法及装置 | |
CN110716950A (zh) | 一种口径系统建立方法、装置、设备及计算机存储介质 | |
CN110737432B (zh) | 一种基于词根表的脚本辅助设计方法及装置 | |
CN108984337A (zh) | 一种数据同步异常的修复方法、修复装置、介质和计算设备 | |
CN105468703A (zh) | 一种原因追溯方法 | |
CN109241205A (zh) | 一种可用于大批量生成关系型模拟数据的方法 | |
CN106959872A (zh) | 应用上线方法和装置 | |
CN107729510B (zh) | 信息交互方法、信息交互终端及存储介质 | |
CN103279408A (zh) | 独立冗余磁盘阵列raid性能的测试方法 | |
CN107861958A (zh) | 一种元数据同步方法及装置 | |
CN112306529A (zh) | 系统升级方法、装置、设备和存储介质 | |
CN110704468A (zh) | 数据更新方法、装置及控制器 | |
Vokorokos et al. | Performance optimization of applications based on non-relational databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |