CN112100182A - 数据入库处理方法、装置和服务器 - Google Patents
数据入库处理方法、装置和服务器 Download PDFInfo
- Publication number
- CN112100182A CN112100182A CN202011034144.0A CN202011034144A CN112100182A CN 112100182 A CN112100182 A CN 112100182A CN 202011034144 A CN202011034144 A CN 202011034144A CN 112100182 A CN112100182 A CN 112100182A
- Authority
- CN
- China
- Prior art keywords
- data
- target data
- identification information
- processing
- preset
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 140
- 238000003860 storage Methods 0.000 claims abstract description 59
- 238000000034 method Methods 0.000 claims description 91
- 230000008569 process Effects 0.000 claims description 26
- 238000013507 mapping Methods 0.000 claims description 25
- 230000007246 mechanism Effects 0.000 claims description 18
- 239000012634 fragment Substances 0.000 claims description 17
- 230000008520 organization Effects 0.000 claims description 13
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 9
- 238000005192 partition Methods 0.000 claims description 7
- 230000008901 benefit Effects 0.000 abstract description 7
- 230000000875 corresponding effect Effects 0.000 description 55
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 14
- 238000013500 data storage Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241001212017 Brana Species 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供了一种数据入库处理方法、装置和服务器。基于该数据入库处理方法,在获取待入库的目标数据后,先通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;再调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。从而可以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替系统生成的无序的默认ID,进行多线程并行处理,减少了对数据资源的消耗,提高了数据入库的处理效率,能够高效、准确地批量完成数据的入库存储。
Description
技术领域
本说明书属于互联网技术领域,尤其涉及数据入库处理方法、装置和服务器。
背景技术
在许多数据处理场景中,常常会使用ElasticSearch(ES,一种数据分析搜索引擎)来查询和使用相关数据。
而基于现有的数据入库处理方法,在将待入库的数据存入ES库时,往往存储在处理效率低,且对数据资源的消耗大。尤其在待入库的数据的数据量较大,且数据类型的复杂度较高的场景(例如,银行等金融机构的交易数据处理场景)中,上述问题更加明显。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书提供了一种数据入库处理方法、装置和服务器,以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替系统自动生成的默认ID,进行多线程并行处理,减少对数据资源的消耗,提高数据入库的处理效率,能高效、准确地批量完成数据的入库存储,解决现有方法中存在的入库存储数据时处理效率低,且对数据资源的消耗大的技术问题。
本说明书实施例提供一种数据入库处理方法,包括:
获取待入库的目标数据;
通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;
调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
在一个实施例中,所述目标数据包括数据宽表中的包含有用户的身份信息,以及用户的属性数据的数据串。
在一个实施例中,所述数据宽表按照以下方式获取:
获取交易流水表、机构表、用户表、用户属性表;
将所述交易流水表,与所述机构表进行关联处理,得到关联后的数据表;
利用所述用户表,对所述关联后的数据表进行去重处理,得到去重后的数据表;
将所述去重后的数据表,与所述用户属性表进行关联处理,得到所述数据宽表。
在一个实施例中,在获取交易流水表、机构表、用户表、用户属性表之后,所述方法还包括:
根据时间信息,对所述交易流水表进行分区处理,得到分区后的数据表;
相应的,
将所述分区后的数据表,与所述机构表进行关联处理,得到所述关联后的数据表。
在一个实施例中,在通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息之前,所述方法还包括:
通过动态的自定义mapping处理,将所述目标数据转化为与业务场景匹配的数据结构的目标数据,以去除脏数据。
在一个实施例中,所述数据结构中的字段的结构类型包括text类型,或keyword类型。
在一个实施例中,所述基于spark的预设算子包括:zipWithIndex算子。
在一个实施例中,通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息,包括:
通过zipWithIndex算子处理所述目标数据,生成并在目标数据上添加对应的一个ID值列,作为与所述目标数据对应的自定义标识信息;并建立所述目标数据与所自定义标识信息的键/值对。
在一个实施例中,所述预设的数据接口包括支持自定义标识信息的bulkprecessor的接口。
在一个实施例中,在将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之前,所述方法还包括:
根据与业务场景匹配的处理规则,识别并去除目标数据中的无效字段信息。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中的过程中,所述方法还包括:
确定是否存在目标数据的分片数据丢失;
在确定存在目标数据的分片数据丢失的情况下,根据上下依赖关系,通过启动重算机制,进行相应的容错处理。
在一个实施例中,在确定存在目标数据的分片数据丢失的情况下,所述方法还包括:
通过预设的存储路径恢复相应路径上丢失的目标数据的分片数据,以进行容错处理;其中,所述预设的存储路径包括基于spark的checkPoint机制所设置的第三方存储路径。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之后,所述方法还包括:
接收数据查询请求;其中,所述数据查询请求根据相匹配的查询规则生成;
响应并根据所述数据查询请求,通过检索基于ElasticSearch的预设的数据库,以获取待查询的结果数据;
反馈所述结果数据。
本说明书实施例还提供了一种数据入库处理装置,包括:
获取模块,用于获取待入库的目标数据;
添加模块,用于通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;
处理模块,用于调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现获取待入库的目标数据;通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
本说明书提供的一种数据入库处理方法、装置和服务器,在获取待入库的目标数据后,先通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;再通过调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。从而可以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替系统自动生成的默认ID,进行多线程并行处理,减少了对数据资源的消耗,提高了数据入库的处理效率,能够高效、准确地批量完成数据的入库存储,解决了现有方法中存在的入库存储数据时处理效率低,且对数据资源的消耗大的技术问题。并且,通过上述方法入库存储数据,相对更适合进行查询、检索等操作,因此通过上述方法入库存储数据还可以提高后续查询、检索的处理效率。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的数据入库处理方法的流程示意图;
图2是在一个场景示例中,应用本说明书实施例提供的数据入库处理方法的一种实施例的示意图;
图3是本说明书的一个实施例提供的服务器的结构组成示意图;
图4是本说明书的一个实施例提供的数据入库处理装置的结构组成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到基于现有的数据入库处理方法在入库存储基于ElasticSearch的数据库中的数据时,往往处理效率较低。并且,基于现有方法,在进行基于ElasticSearch的入库存储数据的过程中,往往会生成并使用ES的默认ID,来进行具体的数据处理。而上述默认ID是系统自动生成的,是一种长度为20个字符、无序的base64编码。在数据量较大、且数据类型较复杂的场景(例如,银行等金融机构的交易数据处理场景)下,上述默认ID会占用掉大量的存储,进一步影响整体的处理效率。
针对产生上述问题的根本原因,本说明书考虑可以引入spark(又称ApacheSpark,一种用于进行大规模数据处理的计算引擎)分布式框架,进而可以利用spark适于进行高并发分布式数据处理的性能优势来通过多线程并行处理将大量待入库的数据存入基于ElasticSearch的数据库中,提高整体的数据处理效率。
同时,又考虑到基于现有方法,大多是使用系统自动生成的默认ID来存储数据。但是上述默认ID的长度通常较长,例如,有20个字符。而在具体的业务场景中,对ID的长度要求并不高,这样就容易造成对存储资源的浪费,并且还会降低数据的压缩率,影响整体的存储性能。此外,上述默认ID还是一种无序的编码,导致使用上述默认ID进行入库存储时,还容易出现重复消耗的问题,进一步影响了数据处理效率,增加了对数据资源的消耗。
因此,在引入spark的分布式框架的基础上,还提出了使用基于spark的预设算子,在目标数据上添加对应的长度较小,且唯一的自定义标识信息(或者称自定义ID)来代替系统自动生成的默认ID,从而可以进一步提高整体的数据处理效率,降低对数据资源的消耗。
基于上述思路,参阅图1所示,本说明书实施例提供了一种数据入库处理方法。其中,该方法具体可以应用于服务器一侧。具体实施时,该方法可以包括以下内容。
S101:获取待入库的目标数据。
S102:通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值。
S103:调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
在一个实施例中,上述目标数据具体可以理解为待写入基于ElasticSearch(即ES)的数据库中的数据。其中,上述ElasticSearch具体可以理解为一种分布式的数据搜索与分析引擎。
在一个实施例中,上述目标数据具体可以是一条数据,也可以是多条数据。其中,每一条数据具体可以是数据串。具体的,上述数据串中可以包含有用户的身份信息,以及对应该用户的一个或多个属性数据。
其中,上述用户的身份信息具体可以是用户的身份证号,也可以是用户的账户名,还可以是用户的注册手机号等。上述属性数据具体可以是与该用户关联的交易数据的交易金额,也可以是交易数据的发生时间,还可以是交易数据的发生地点等等。当然,上述所列举的用户的身份信息和用户的属性数据只是一种示意性说明。具体实施时,根据具体的业务场景和处理需求,上述用户的身份信息、用户属性数据还可以包括除上述所列举的信息、数据以外其他类型的信息、数据。对此,本说明书不作限定。
在一个实施例中,上述目标数据具体可以包括数据宽表中的包含有用户的身份信息,以及用户的属性数据的数据串。
在一个实施例中,上述数据宽表具体可以理解为是服务器响应作业指令,定期从系统中拉取多个与用户的身份信息、用户的属性数据相关的数据表,进行诸如关联、分区、清洗等处理后,得到的包含有待存储入库的目标数据的数据源(例如,hive,或者称hive宽表)。
在一个实施例中,可以参阅图2所示,所述数据宽表具体可以按照以下方式获取得到:
S1:获取交易流水表、机构表、用户表、用户属性表;
S2:将所述交易流水表,与所述机构表进行关联处理,得到关联后的数据表;
S3:利用所述用户表,对所述关联后的数据表进行去重处理,得到去重后的数据表;
S4:将所述去重后的数据表,与所述用户属性表进行关联处理,得到所述数据宽表。
在一个实施例中,上述交易流水表(例如,tbl_trad_flow)具体可以记录有一个时间段内系统所接收处理的多条交易流水信息。其中,每一条交易流水信息可以包含有用于与用户对应的标识信息(例如,用户用于支付的银行卡号等),以及交易所发生地(例如,交易发生的支行等第三级机构)。
上述机构表(例如,tbl_brana_newgen)具体可以记录有各个第三级机构对应的第二级机构(例如,市区分行)和第一级机构(例如,省行等)等机构的相关信息。
上述用户表(例如,priv_acct_info,也可以称客户表)具体可以记录有对应于同一个用户的多种不同的标识信息。例如,在上述用户表中记载了对应用户A的标识信息包括:A的银行卡号、A的账户名称、A的身份证号等等。
上述用户属性表(例如,tbl_cust_view_info)具体可以记录有对应各个用户的各类属性的具体数据值。
在一个实施例中,通过将所述交易流水表,与所述机构表进行关联处理,可以根据机构表中的信息,确定并在交易流水表中补充相应的第二级机构和第一级机构的等信息,得到相对更加完整、丰富的数据表,作为关联后的数据表。
在一个实施例中,考虑到上述关联后的数据表中所记录的交易流水信息可能存在重复信息。为了进一步减少数据存储量,可以利用用户表,将上述关联后的数据表中原本对应同一个用户的不同标识信息的数据统一关联对应到一个标识信息(即用户的身份信息),从而完成去重处理。
在一个实施例中,进一步还可以根据用户属性表,将用户属性表中记载的属性数据增加到去重后的数据表的对应的数据中,从而得到包含有待入库数据的数据宽表。
在一个实施例中,在获取交易流水表、机构表、用户表、用户属性表之后,所述方法具体实施时,还可以包括以下内容:根据时间信息,对所述交易流水表进行分区处理,得到分区后的数据表;相应的,后续可以将所述分区后的数据表,与所述机构表进行关联处理,得到所述关联后的数据表。
在本实施例中,通过根据时间信息(例如,交易日期等)对交易流水表进行分区,可以做到对每天数据的分离切分,保证每一个数据宽表不会由于过大而导致大量占用数据资源,影响整体的处理效率。
在一个实施例中,在根据上述方式处理交易流水表、机构表、用户表和用户属性表,构建数据宽表的过程中,还可以结合具体业务场景和处理需求,对相关数据进行清洗,去除无效数据和错误数据,从而可以进一步降低对数据资源的占用和消耗。
在一个实施例中,具体实施时,可以根据当前作业流的依赖关系,从上述数据宽表中获取相应的数据作为待入库的目标数据。
在一个实施例中,考虑到基于现有方法,往往是通过默认的mapping处理(一种表结构定义,包括:定义index下的字段名;定义字段类型;定义倒排索引相关的设置等)先将待入库的数据转换为相应的数据结构后,再写入基于ElasticSearch的数据库中。
其中,由于上述默认的mapping往往是没有针对性的。因此,基于默认的mapping处理所得到数据结构往往会包含有大量在某些具体的业务场景(例如,银行等金融机构的交易数据处理场景)中不会使用到的冗余的数据结构信息,进而导致对数据资源的尤其是存储资源的占用和浪费,同时也响应相关的数据处理操作,影响整体的数据处理效率。当数据量较大时,上述问题将会变得比较严重。
具体的,例如,基于默认的mapping处理,数据结构在写入文档的时候,索引不存在,会自动创建索引,这时ES会根据待入库存储的数据内容推断字段的类型,基于默认的mapping处理会让每个字段的数据结构设置为text类型,同时嵌套keyword类型。但在例如银行等金融机构的交易数据处理场景中,往往只需要使用到一种类型;并且有时业务处理上也只需要某个字段的索引查询功能,而并不需要例如聚合、分词、空值异常处理等功能。因此,基于默认的mapping处理会占用大量的存储空间,增加对数据资源的消耗。
此外,基于默认的mapping处理,也无法结合具体的业务场景,细化对数据的针对性处理,也导致在存入基于ElasticSearch的数据库中的数据中容易混入脏数据,对数据处理的准确性造成影响。
在一个实施例中,在通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息之前,所述方法具体实施时,还可以包括以下内容:通过动态的自定义mapping处理,将所述目标数据转化为与业务场景匹配的数据结构的目标数据,以去除脏数据。
其中,上述动态的自定义mapping处理具体可以为一种针对具体的业务场景定制化的mapping处理。
通过动态的自定义mapping处理,代替原有的默认mapping处理,可以将上述待入库的目标数据转化成与业务场景匹配的定制化的数据结构,从而可以在降低对数据资源的消耗的同时,去除存入数据库的数据中的脏数据,从而可以相对更加高效、准确地完成数据入库存储。
在一个实施例中,所述数据结构中的字段的结构类型具体包括text类型,或keyword类型。
在本实施例中,通过动态的自定义mapping处理后所得到的数据结构中的每一个字段的结构类型具体可以是包含有一个该业务场景所需要的类型。例如,text类型,或keyword类型。而不会像现有方法那样在text类型之外,同时嵌套keyword类型。从而可以有效地降低数据存储量,减少对数据资源的消耗。
在一个实施例中,通过动态的自定义mapping处理,将所述目标数据转化为与业务场景匹配的数据结构(即定制化的数据结构)的目标数据,具体实施时,可以包括以下内容。
具体的,首先,对于数据中的固定的数据结构(即第一部分),比如在一些业务场景中交易流水表中的结构,可以被认为是基于固定的字段,并且所对应的字段数和类型也可以是固定的,因此可以直接通过获取外部文件来获取这部分的mapping。
其次,在一些业务场景中,对于交易流水表字段外的其他字段(即第二部分),由于业务的不断迭代,字段类型、字段大小都可能会更改发生变化。对于这类字段,可以通过接入Oracle表,在每次初始化mapping处理时候,可以先通过获取Oracle表这些字段的属性;然后再结合具体的业务场景,剔除不必要的存储信息,定制得到符合当前业务场景最优的mapping结构。
进一步,在按照上述方式将数据中的第一部分、第二部分初始化并组装成相应的mapping后,又考虑到在银行等金融机构的交易数据处理场景中,数据相对更加复杂、多变,例如,可能存在某天内某字段存储类型不唯一的情况。举例而言,某个字段在Oracle表中定义为data,但当天该字段还有少量数据可能被存储的是double类型。这会导致入库ES(即存入基于ElasticSearch的数据库)的时候,该条数据类型不匹配mapping的数据结构,从而造成数据丢失。
因此,为了避免上述情况,为了减少脏数据,还可以在完成数据中的第一部分、第二部分的mapping后,还可以再接入针对全局的类型转换,作为第三部分的处理,以兼容不断变化的字段的数据类型。具体的,可以通过编写代码逻辑,来支持在自定义mapping处理的时候,字段的Double类型转化为Keyword类型、Date类型转化为Keyword类型、所有字段转化为Keyword类型,从而可以有效地预防因为类型不一致导致的大量丢失数据的情况,保证了数据处理的准确性。并且,还可以支持部分或者全局字段类型转化为Keyword类型。
在一个实施例中,上述基于spark的预设算子具体可以包括:zipWithIndex算子。
其中,上述zipWithIndex算子具体可以理解为spark分布式框架中的内置算子。通过该算子可以以分布式的方式定制了自定义ID,并且该算子可以支持将RDD(ResilientDistributed DataSet,弹性分布式数据集)中的元素和这个元素在RDD中的ID(索引号)组合成键/值对,这样就可以让数据赋值了唯一的有序的ID,进一步可以利用该有序的ID代替系统自动生成的默认的ID来参与目标数据的入库处理,从而可以让ES在存储成segment文件时有了更大的压缩率,有效地节省了存储资源,降低了对数据资源的消耗。
在一个实施例中,上述通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息,具体实施时,可以包括以下内容:通过zipWithIndex算子处理所述目标数据,生成并在目标数据上添加对应的一个ID值列,作为与所述目标数据对应的自定义标识信息;并建立所述目标数据与所自定义标识信息的键/值对。
在本实施例中,具体实施时,在通过zipWithIndex算子具体处理目标数据中每一条数据时,可以通过zipWithIndex算子在目标数据的数据结构中生成并增加一个ID值列,这样每一条数据就有了唯一的ID(从0开始),作为自定义标识信息(也可以称为自定义ID)。进而又建立上述ID与目标数据的键/值对,使用上述自定义标识信息来代替系统自动生成的默认ID来参与后续相关的数据处理。并且上述自定义标识信息的长度通常可以自定义地设置为小于预设的长度阈值(例如,20),因此所占用的数据量也小于默认ID。
通过上述方式,可以有效地降低数据占用量,同时也可以避免由于使用无序的默认ID所引入出现重复消耗、响数据处理效率等问题,从而可以进一步提高整体的数据处理效率。
并且,使用上述自定义标识信息来代替默认ID,也更利用ES的排序检索,方便后续的检索、查询。
在一个实施例中,所述预设的数据接口包括支持自定义标识信息的bulkprecessor的接口。其中,上述bulkprecessor具体可以理解为一个线程安全的批量处理类。
其中,上述预设的数据接口具体可以是spark分布式框架中的bulkprecessor的高级接口(或称API)。该接口可以支持使用上述自定义标识信息。
在本实施例中,具体实施时,可以使用bulkprecessor的高级API将目标入库ES,其中,上述API可以支持指定使用唯一的自定义标识(也可以称索引列)作为入库ES时的ID,这样就可以不使用ES默认ID了。
在一个实施例中,具体实施时,可以通过调用上述基于spark的预设的数据接口,通过多线程并行处理,充分利用spark的特性,高并发地将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中,提高整体的处理效率。
具体的,通过上述方式可以利用spark自身的特性实现高并发多线程读取数据源,快速并行读取hive数据源;通过在spark-submit提交Yarn任务的时候,配置相应的任务参数,以指定多个num-executors和对应的executor-core个数(即配置多个工作节点),来实现高并发读取数据hive。
同时在上述读取过程中,还可以通过利用spark容错机制,能够在高并发处理任务出现失败,例如出现数据丢失等情况下,进行相应数据恢复,保证数据处理整体的准确、可靠。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中的过程中,所述方法具体实施时,还可以包括以下内容:确定是否存在目标数据的分片数据丢失(例如,LineAge内部有分片数据丢失);在确定存在目标数据的分片数据丢失的情况下,根据上下依赖关系,通过启动重算机制,进行相应的容错处理。
在一个实施例中,在确定存在目标数据的分片数据丢失的情况下,所述方法具体实施时,还可以包括以下内容:通过预设的存储路径恢复相应路径上丢失的目标数据的分片数据,以进行容错处理;其中,所述预设的存储路径包括基于spark的checkPoint机制所设置的第三方存储路径(例如,hdfs)。
其中,上述checkpoint机制可以是建立检查点,类似于快照。例如在spark计算里面计算流程DAG特别长,服务器需要将整个DAG计算完成得出结果,但是如果在这很长的计算流程中突然中间算出的数据丢失了,spark又会根据RDD的依赖关系从头到尾计算一遍,这样子就很费性能,当然我们可以将中间的计算结果通过cache或者persist放到内存或者磁盘中,但是这样也不能保证数据完全不会丢失,存储的这个内存出问题了或者磁盘坏了,也会导致spark从头再根据RDD计算一遍,所以就有了checkpoint,其中checkpoint的作用就是将DAG中比较重要的中间数据做一个检查点将结果存储到一个高可用的地方。
通过上述方式可以充分地利用spark的容错机制,准确、可靠地将目标数据入库存储至基于ElasticSearch的数据库中,完成目标数据的入库处理。
在一个实施例中,在将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之前,所述方法具体实施时,还可以包括以下内容:根据与业务场景匹配的处理规则,识别并去除目标数据中的无效字段信息。从而可以进一步降低数据量,进一步减少对数据资源的消耗,进一步提高整体的处理效率。其中,上述处理规则可以根据业务场景的数据入库处理的具体要求和特点灵活配置。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之后,所述方法具体实施时,还可以包括以下内容:
S1:接收数据查询请求;其中,所述数据查询请求根据相匹配的查询规则生成;
S2:响应并根据所述数据查询请求,通过检索基于ElasticSearch的预设的数据库,以获取待查询的结果数据;
S3:反馈所述结果数据。
在本实施例中,当用户想要通过终端设备查询每一个具体的结果数据时,可以根据相匹配的查询规则,基于所要查询的结果数据的字段生成对应的数据查询请求,而不需要了解ES内部的匹配规则,就能较为方便、高效地发起对应的数据查询请求,得到服务器基于上述查询请求所反馈的结果数据。
其中,所述终端设备具体可以包括一种应用于用户一侧,能够实现数据采集、数据传输等功能的前端设备。具体的,所述终端设备例如可以为台式电脑、平板电脑、笔记本电脑、智能手机、智能可穿戴设备等。
应用上述方法的服务器具体可以包括一种应用于业务数据处理系统(例如,银行的交易数据处理系统)一侧,能够实现数据传输、数据处理等功能的后台服务器。具体的,所述服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
进一步,服务器可以ES内置的内存索引机制,将近期查询过的字段缓存到内存中,便于再次查询,提高查询效果。
经测试,在2亿条或1.4T大小的数据量规模下,多层嵌套的字段拼接首次查询会在5秒内返回数据结果。再次查询时,可以在100ms内返回。
在一个实施例中,在根据业务场景设置并使用对应相匹配的查询规则时,服务器通过解剖分析ES的拼接规则,发现:历史场景的查询规则就是平常使用的与或非嵌套,而在ES规则里面也有对应的must、should、must_not。因此,可以通过与前端约定,在获取历史场景的数据查询请求的情况下,可以根据上述相匹配的查询规则,将上述数据查询请求解析封装成符合ES对应的must、should、must_not请求,再通过Post请求实现访问ES以检索获取对应的结果数据。
由上可见,本说明书实施例提供的数据入库处理方法,在获取待入库的目标数据后,先通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;再调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。从而可以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替默认ID,进行多线程并行处理,减少了对数据资源的消耗,提高了数据入库的处理效率,高效、准确地批量完成数据的入库存储,解决了现有方法中存在的入库存储数据时处理效率低,且对数据资源的消耗大的技术问题。并且,通过上述方法入库存储的数据相对更适合进行查询、检索等操作,因此通过上述方法入库存储数据还可以提高后续查询、检索的处理效率。
本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取待入库的目标数据;通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
为了能够更加准确地完成上述指令,参阅图3所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口301、处理器302以及存储器303,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口301,具体可以用于获取待入库的目标数据。
所述处理器302,具体可以用于通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
所述存储器303,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口301可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器302可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器303可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述数据入库处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取待入库的目标数据;通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图4所示,在软件层面上,本说明书实施例还提供了一种数据入库处理装置,该装置具体可以包括以下的结构模块。
获取模块401,具体可以用于获取待入库的目标数据;
添加模块402,具体可以用于通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;
处理模块403,具体可以用于调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
在一个实施例中,所述目标数据具体可以包括数据宽表中的包含有用户的身份信息,以及用户的属性数据的数据串等。
在一个实施例中,所述装置具体实施时,可以按照以下方式获取所述数据宽表:获取交易流水表、机构表、用户表、用户属性表;将所述交易流水表,与所述机构表进行关联处理,得到关联后的数据表;利用所述用户表,对所述关联后的数据表进行去重处理,得到去重后的数据表;将所述去重后的数据表,与所述用户属性表进行关联处理,得到所述数据宽表。
在一个实施例中,在获取交易流水表、机构表、用户表、用户属性表之后,所述装置还用于根据时间信息,对所述交易流水表进行分区处理,得到分区后的数据表;相应的,还用于将所述分区后的数据表,与所述机构表进行关联处理,得到所述关联后的数据表。
在一个实施例中,在通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息之前,所述装置具体实施时,还用于通过动态的自定义mapping处理,将所述目标数据转化为与业务场景匹配的数据结构的目标数据,以去除脏数据。
在一个实施例中,所述数据结构中的字段的结构类型具体可以包括text类型,或keyword类型等一个。
在一个实施例中,所述基于spark的预设算子具体可以包括:zipWithIndex算子等。
在一个实施例中,所述添加模块具体实施时,还可以用于通过zipWithIndex算子处理所述目标数据,生成并在目标数据上添加对应的一个ID值列,作为与所述目标数据对应的自定义标识信息;并建立所述目标数据与所自定义标识信息的键/值对。
在一个实施例中,所述预设的数据接口具体可以包括支持自定义标识信息的bulkprecessor的接口。
在一个实施例中,在将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之前,所述装置具体实施时,还可以用于根据与业务场景匹配的处理规则,识别并去除目标数据中的无效字段信息。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中的过程中,所述装置具体实施时,还可以用于确定是否存在目标数据的分片数据丢失;在确定存在目标数据的分片数据丢失的情况下,根据上下依赖关系,通过启动重算机制,进行相应的容错处理。
在一个实施例中,在确定存在目标数据的分片数据丢失的情况下,所述装置具体实施时,还可以用于通过预设的存储路径恢复相应路径上丢失的目标数据的分片数据,以进行容错处理;其中,所述预设的存储路径包括基于spark的checkPoint机制所设置的第三方存储路径。
在一个实施例中,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之后,所述装置具体实施时,还可以用于接收数据查询请求;其中,所述数据查询请求根据相匹配的查询规则生成;响应并根据所述数据查询请求,通过检索基于ElasticSearch的预设的数据库,以获取待查询的结果数据;反馈所述结果数据。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的数据入库处理装置,可以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替默认ID,进行多线程并行处理,减少了对数据资源的消耗,提高了数据入库的处理效率,高效、准确地批量完成数据的入库存储。
在一个具体的场景示例中,具体实施时,可以应用本说明书实施例提供的数据入库处理方法来高效地处理银行等金融机构中大量的交易数据。具体实施过程可以参阅以下内容。
步骤1:建立宽表(即数据宽表)作为数据源。
具体的,可以获取并利用关联交易流水表(tbl_netupay_trad_flow,该表是以日期dt进行分区,字段类型长度固定的hive)与机构表(tbl_brana_newgen),进行关联以增加一级机构号和二级机构号字段,形成包含一级、二级、三级机构号(即第一级机构的信息、第二级机构的信息和第三级机构的信息)的交易流水表,丰富数据机构等级(作为关联后的数据表)。然后通过客户表(即用户表)priv_acct_info进行关联,增加用户表信息字段,并作去重,再通过唯一的用户账号关联起来(得到去重后的数据表)。最后通过客户号把上面的合成好的表与客户属性表(即用户属性表)tbl_cust_view_info关联,最终形成需要的数据源:宽表。
在本场景示例中,该宽表是最终的数据源,在这里可以通过调度平台的作业流定制,通过每天固定一个时间点,关联整理前一天或者定制某一天为分区的数据源,做到数据隔离,分批处理。通过对数据以日期分区,按日期切分数据的大小,同时做到数据合理隔离。
步骤2:利用spark高效地对数据进行ES入库。
具体的,在spark分布式高并发的处理下,因为大量的task任务被执行,spark的DAG原理会对低概率失败任务根据DAG回滚处理;当某个task处理一部分数据后,该task可能因为内存不足或者其他某些原因导致task丢失失败,那么spark会重新回到该task上一个stage,重新执行一次该task。这就导致数据的重复消费,无法保证数据的唯一性。若是使用ES默认ID,由于每次都是系统自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突,但会导致同一条数据两个不同的默认ID从而重复。
在本场景示例中,可以通过分布式RDD中的zipWithIndex(即基于spark的预设算子)添加自定义有序id(即自定义标识信息),为每条数据形成键/值对。再结合ES内部对ID的去重处理,做到保证数据的唯一性和正确性,同时也节省了存储资源,有序的ID也提升了查询效率。通过ES低级与高级API的运用,spark分区并行优化处理,动态定制mapping,优化数据结构类型,提升入库效率,还有分布式自定义id的优化,解决高并发环境下数据重复消费问题。
步骤3:查询检索。
具体使用时,可以通过约定检索查询的匹配规则(即相匹配的查询规则),让业务人员无需了解具体的ES匹配规则,只需要知道业务想查询的字段与拼接条件,就可以通过客户端到服务器的接近实时的返回数据结果。
经测试,在2亿条或1.4T大小的数据量规模下,多层嵌套的字段拼接首次会在5秒内返回数据结果。而且在查询过的字段第二次再次查询时,可以在100ms内返回,这得益于ES内置的内存索引机制(会记录近期查询的数据缓存到内存,只要内存足够,就不会刷回硬盘)真正做到实时返回结果。
在本场景示例中,可以与前端开发人员约定的与或非拼接规则作为相匹配的查询规则。
具体的,是考虑到ES内部有自己的查询规则,该规则是ES内部定义的,不同于关系型数据库的SQL。但它也有自己的规则,通过解剖分析ES的拼接规则,发现历史场景的查询规则就是平常使用的与或非嵌套,而在ES规则里面也有对应的must、should、must_not。因此,可以通过与前端约定;在获取历史场景的请求条件后,可以解析封装成符合ES对应的must、should、must_not请求,再通过Post请求实现访问ES获取数据结果。
通过使用上述规则,让业务人员无需了解ES本身复杂的各类查询规则规范,中文检索、数值匹配、日期聚合、模糊检索、中文分词等等,直接选择场景规则,快速查询返回结果。
此外,在本场景示例中,还可以根据上述数据入库处理方法,进一步扩展执行以下步骤,来进行具体的作业应用。
步骤4:开发调度工具,按照数据调度的条件调度相应作业流。
其中,上述数据调度条件具体可以理解为数据调度条件就是作业流中的子作业id。
在本场景示例中,可以通过配置作业流,把整个作业按流的方式,分成一个个小的作业点,下个作业依赖上个作业。
考虑到作业流主要目的是实现hive数据入库ES;整个过程分为4个小作业。上述调度平台作业流的具体创建可以包括以下内容:hive数据源的ETL,多表关联,分区存储;创建索引,spark读取hive,批量入库ES;更新Oracle,动态配置前端可查询范围,参数配置等;保留7天数据,动态删除hive与ES数据。
步骤5:开发交互工具,方便查找需要找依赖的数据源,并在此基础上创建作业流。
通过检测,发现:利用上述数据入库处理方法,基于ES数据的存储,以每天的数据为1个index索引,1个index分成20个分片,均匀存储在不同节点(节点数>20)同时副本设为0,减少数据冗余、节省存储资源。使用ES默认ID时,每天正常在1.4T(2亿条)数据量的入库会有约0.3%(50多万)重复消费,通过spark添加分布式自定义ID,在高并发多线程处理数据的高压环境下,也能完全解决spark失败task导致的数据重复消费问题,同时构建调度作业动态删除旧hive宽表与index(保留最新7天index和源数据),节约存储资源。
通过上述场景示例,验证了本说明书实施例提供的数据入库处理方法确实可以充分利用spark分布式框架的性能优势,并利用自定义标识信息代替默认ID,进行多线程并行处理,减少了对数据资源的消耗,提高了数据入库的处理效率,高效、准确地批量完成数据的入库存储。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
Claims (16)
1.一种数据入库处理方法,其特征在于,包括:
获取待入库的目标数据;
通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;
调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
2.根据权利要求1所述的方法,其特征在于,所述目标数据包括数据宽表中的包含有用户的身份信息,以及用户的属性数据的数据串。
3.根据权利要求2所述的方法,其特征在于,所述数据宽表按照以下方式获取:
获取交易流水表、机构表、用户表、用户属性表;
将所述交易流水表,与所述机构表进行关联处理,得到关联后的数据表;
利用所述用户表,对所述关联后的数据表进行去重处理,得到去重后的数据表;
将所述去重后的数据表,与所述用户属性表进行关联处理,得到所述数据宽表。
4.根据权利要求3所述的方法,其特征在于,在获取交易流水表、机构表、用户表、用户属性表之后,所述方法还包括:
根据时间信息,对所述交易流水表进行分区处理,得到分区后的数据表;
相应的,
将所述分区后的数据表,与所述机构表进行关联处理,得到所述关联后的数据表。
5.根据权利要求1所述的方法,其特征在于,在通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息之前,所述方法还包括:
通过动态的自定义mapping处理,将所述目标数据转化为与业务场景匹配的数据结构的目标数据,以去除脏数据。
6.根据权利要求5所述的方法,其特征在于,所述数据结构中的字段的结构类型包括text类型,或keyword类型。
7.根据权利要求5所述的方法,其特征在于,所述基于spark的预设算子包括:zipWithIndex算子。
8.根据权利要求7所述的方法,其特征在于,通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息,包括:
通过zipWithIndex算子处理所述目标数据,生成并在目标数据上添加对应的一个ID值列,作为与所述目标数据对应的自定义标识信息;并建立所述目标数据与所自定义标识信息的键/值对。
9.根据权利要求1所述的方法,其特征在于,所述预设的数据接口包括支持自定义标识信息的bulkprecessor的接口。
10.根据权利要求9所述的方法,其特征在于,在将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之前,所述方法还包括:
根据与业务场景匹配的处理规则,识别并去除目标数据中的无效字段信息。
11.根据权利要求1所述的方法,其特征在于,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中的过程中,所述方法还包括:
确定是否存在目标数据的分片数据丢失;
在确定存在目标数据的分片数据丢失的情况下,根据上下依赖关系,通过启动重算机制,进行相应的容错处理。
12.根据权利要求11所述的方法,其特征在于,在确定存在目标数据的分片数据丢失的情况下,所述方法还包括:
通过预设的存储路径恢复相应路径上丢失的目标数据的分片数据,以进行容错处理;其中,所述预设的存储路径包括基于spark的checkPoint机制所设置的第三方存储路径。
13.根据权利要求1所述的方法,其特征在于,在调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中之后,所述方法还包括:
接收数据查询请求;其中,所述数据查询请求根据相匹配的查询规则生成;
响应并根据所述数据查询请求,通过检索基于ElasticSearch的预设的数据库,以获取待查询的结果数据;
反馈所述结果数据。
14.一种数据入库处理装置,其特征在于,包括:
获取模块,用于获取待入库的目标数据;
添加模块,用于通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;
处理模块,用于调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
15.一种服务器,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现获取待入库的目标数据;通过基于spark的预设算子,在所述目标数据上添加对应的自定义标识信息;其中,所述自定义标识信息的长度小于预设的长度阈值;调用基于spark的预设的数据接口,通过多线程并行处理,将携带有自定义标识信息的目标数据批量存入基于ElasticSearch的数据库中。
16.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现权利要求1至13中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011034144.0A CN112100182B (zh) | 2020-09-27 | 2020-09-27 | 数据入库处理方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011034144.0A CN112100182B (zh) | 2020-09-27 | 2020-09-27 | 数据入库处理方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100182A true CN112100182A (zh) | 2020-12-18 |
CN112100182B CN112100182B (zh) | 2024-08-09 |
Family
ID=73782311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011034144.0A Active CN112100182B (zh) | 2020-09-27 | 2020-09-27 | 数据入库处理方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100182B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749154A (zh) * | 2020-12-30 | 2021-05-04 | 上海微盟企业发展有限公司 | 一种数据入库方法、装置、设备及计算机可读存储介质 |
CN113806438A (zh) * | 2021-11-19 | 2021-12-17 | 北京亿赛通网络安全技术有限公司 | 一种基于海量bcp数据文件的入库及预处理方法和系统 |
CN114168595A (zh) * | 2021-12-09 | 2022-03-11 | 中国建设银行股份有限公司 | 一种数据分析方法及装置 |
CN115631866A (zh) * | 2022-12-19 | 2023-01-20 | 成都瑞华康源科技有限公司 | 一种针对医疗大数据采集的快速精准去重方法 |
CN118467591A (zh) * | 2024-07-10 | 2024-08-09 | 浙江智臾科技有限公司 | 一种基于多线程异步的高频数据库写入方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106296301A (zh) * | 2016-08-17 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种房产销售线索的挖掘方法 |
US20170056764A1 (en) * | 2015-08-31 | 2017-03-02 | Omniscience Corporation | Event categorization and key prospect identification from storylines |
CN109271365A (zh) * | 2018-09-19 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于Spark内存技术对HBase数据库加速读写的方法 |
CN109325808A (zh) * | 2018-09-27 | 2019-02-12 | 重庆智万家科技有限公司 | 基于Spark大数据平台的商品需求预测与物流分仓规划方法 |
CN109684332A (zh) * | 2018-12-20 | 2019-04-26 | 贵州工程应用技术学院 | 一种数据宽表生成方法、装置及系统 |
CN111198917A (zh) * | 2020-01-06 | 2020-05-26 | 中国建设银行股份有限公司 | 数据处理方法、装置、设备及存储介质 |
-
2020
- 2020-09-27 CN CN202011034144.0A patent/CN112100182B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170056764A1 (en) * | 2015-08-31 | 2017-03-02 | Omniscience Corporation | Event categorization and key prospect identification from storylines |
CN106296301A (zh) * | 2016-08-17 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种房产销售线索的挖掘方法 |
CN109271365A (zh) * | 2018-09-19 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于Spark内存技术对HBase数据库加速读写的方法 |
CN109325808A (zh) * | 2018-09-27 | 2019-02-12 | 重庆智万家科技有限公司 | 基于Spark大数据平台的商品需求预测与物流分仓规划方法 |
CN109684332A (zh) * | 2018-12-20 | 2019-04-26 | 贵州工程应用技术学院 | 一种数据宽表生成方法、装置及系统 |
CN111198917A (zh) * | 2020-01-06 | 2020-05-26 | 中国建设银行股份有限公司 | 数据处理方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
王伟军等: "《大数据分析》", 30 April 2017, 重庆大学出版社, pages: 33 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749154A (zh) * | 2020-12-30 | 2021-05-04 | 上海微盟企业发展有限公司 | 一种数据入库方法、装置、设备及计算机可读存储介质 |
CN113806438A (zh) * | 2021-11-19 | 2021-12-17 | 北京亿赛通网络安全技术有限公司 | 一种基于海量bcp数据文件的入库及预处理方法和系统 |
CN114168595A (zh) * | 2021-12-09 | 2022-03-11 | 中国建设银行股份有限公司 | 一种数据分析方法及装置 |
CN115631866A (zh) * | 2022-12-19 | 2023-01-20 | 成都瑞华康源科技有限公司 | 一种针对医疗大数据采集的快速精准去重方法 |
CN118467591A (zh) * | 2024-07-10 | 2024-08-09 | 浙江智臾科技有限公司 | 一种基于多线程异步的高频数据库写入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112100182B (zh) | 2024-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230126005A1 (en) | Consistent filtering of machine learning data | |
US11455217B2 (en) | Transaction consistency query support for replicated data from recovery log to external data stores | |
US11379755B2 (en) | Feature processing tradeoff management | |
CN112100182B (zh) | 数据入库处理方法、装置和服务器 | |
CN109997126B (zh) | 事件驱动提取、变换、加载(etl)处理 | |
US11100420B2 (en) | Input processing for machine learning | |
US10353893B2 (en) | Data partitioning and ordering | |
US20200050968A1 (en) | Interactive interfaces for machine learning model evaluations | |
US10339465B2 (en) | Optimized decision tree based models | |
US11182691B1 (en) | Category-based sampling of machine learning data | |
US10318882B2 (en) | Optimized training of linear machine learning models | |
US10963810B2 (en) | Efficient duplicate detection for machine learning data sets | |
CN109034993A (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
US10255363B2 (en) | Refining search query results | |
US11977532B2 (en) | Log record identification using aggregated log indexes | |
WO2018053024A1 (en) | Organizing datasets for adaptive responses to queries | |
CN113821573A (zh) | 海量数据快速检索服务构建方法、系统、终端及存储介质 | |
CN115809304A (zh) | 字段级血缘解析方法、装置、计算机设备、存储介质 | |
US9471569B1 (en) | Integrating information sources to create context-specific documents | |
CN106776772B (zh) | 一种数据检索的方法及装置 | |
CN110851517A (zh) | 一种源数据抽取方法、装置、设备及计算机存储介质 | |
CN115840786B (zh) | 一种数据湖数据同步方法及装置 | |
JP7428599B2 (ja) | システム構築支援装置およびその方法 | |
Nagireddy | Job recommendation system with NoSQL databases: Neo4j, MongoDB, DynamoDB, Cassandra and their critical comparison | |
Jain et al. | Analyzing Web Access Logs using Spark with Hadoop |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |