CN117591035B - 数据集处理方法、装置及计算机可读取存储介质 - Google Patents

数据集处理方法、装置及计算机可读取存储介质 Download PDF

Info

Publication number
CN117591035B
CN117591035B CN202410070275.6A CN202410070275A CN117591035B CN 117591035 B CN117591035 B CN 117591035B CN 202410070275 A CN202410070275 A CN 202410070275A CN 117591035 B CN117591035 B CN 117591035B
Authority
CN
China
Prior art keywords
data set
data
target
request
client
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.)
Active
Application number
CN202410070275.6A
Other languages
English (en)
Other versions
CN117591035A (zh
Inventor
王德健
张佩挺
董科雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Yikang Internet Technology Co ltd
Original Assignee
Tianjin Yikang Internet Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Yikang Internet Technology Co ltd filed Critical Tianjin Yikang Internet Technology Co ltd
Priority to CN202410070275.6A priority Critical patent/CN117591035B/zh
Publication of CN117591035A publication Critical patent/CN117591035A/zh
Application granted granted Critical
Publication of CN117591035B publication Critical patent/CN117591035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据集处理方法、装置及计算机可读取存储介质,涉及数据处理和联邦学习隐私计算技术领域。该方法包括:基于接收接口,获取前端发送的目标数据集;根据每个目标数据集生成对应的标识信息;基于标识信息,将目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,压缩格式包括:Arrow或Parque;基于标识信息,向客户端提供目标磁盘中的目标数据。通过对数据集进行格式转换的方式对数据集进行存储,并结合唯一的标识信息进行数据提取,有效地提高了数据集的加载效率,减小了加载数据集时的内存占用率,支持在内存资源较小的设备上使用大型数据集,适用于多种不同的加载场景,满足用户的多种训练需求。

Description

数据集处理方法、装置及计算机可读取存储介质
技术领域
本申请涉及数据处理和联邦学习隐私计算技术领域,具体而言,涉及一种数据集处理方法、装置及计算机可读取存储介质。
背景技术
联邦学习系统party端实际的计算单元worker获取对应数据集时,普遍是从数据库或通过磁盘文件进行获取。
当读取的数据库文件和磁盘文件过大,例如从mysql数据库中一次性加载1个G大小的表内容时,可能需要1分钟时间,导致整体计算周期时间过久。且在数据加载过程中,由于所有数据量都会被加载到内存中,当同一时间运行的算法数较多时,就会导致数据库服务器资源紧张,影响整体运行效率。因此,目前获取数据集时存在数据集加载时间过久、内存占用过大等问题,无法满足用户的训练需求。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据集处理方法、装置及计算机可读取存储介质,以改善现有技术中存在的数据集加载时间过久、内存占用过大的问题。
为了解决上述问题,第一方面,本申请实施例提供了一种数据集处理方法,所述方法包括:
基于接收接口,获取前端发送的目标数据集;
根据每个所述目标数据集生成对应的标识信息;
基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,所述压缩格式包括:Arrow或Parquet;
基于所述标识信息,向客户端提供所述目标磁盘中的所述目标数据。
在上述实现过程中,通过接收接口接收前端发送的需要进行存储的目标数据集,并确定每个目标数据集具有唯一性的标识信息,以对目标数据集的身份进行标识。通过将目标数据集转换为不受内存限制的压缩格式,能够结合身份的标识信息将数据存储在磁盘中,以为客户端提供相应的目标数据进行模型训练等使用。通过改变数据格式的方式,有效地提高了数据库服务器中数据集的加载效率,减小了加载数据集时的内存占用率,支持在内存资源较小的设备上使用大型数据集,适用于多种不同的加载场景,满足用户的多种训练需求。
可选地,其中,所述接收接口包括上传接口和更新接口;所述目标数据集包括:新增数据集和更新数据集;
所述基于接收接口获取前端发送的目标数据集,包括:
基于前端调用的所述上传接口接收所述新增数据集;
基于前端调用的所述更新接口接收所述更新数据集。
在上述实现过程中,目标数据集具有多种不同的类型,可以包括新增到数据库的数据集以及对数据库中已有的数据集进行更新的数据集。由于数据集类型的不同,数据集的来源也可能不同,因此,可以调用不同的接收接口对不同类型的目标数据集进行接收,以实现多种类数据集的正常接收。
可选地,所述基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中,包括:
基于所述标识信息,在所述目标磁盘中存储的所有历史数据对应的所有历史标识中进行查询;
若判定存在与所述标识信息相同的所述历史标识,则确定所述目标数据集为所述更新数据集,将所述更新数据集转换为所述压缩格式的所述目标数据;在所述目标磁盘中确定所述历史标识对应的目标历史数据的历史存储区域;将所述目标数据存储至所述历史存储区域中,以替换所述历史存储区域中的所述目标历史数据;
若判定不存在与所述标识信息相同的所述历史标识,则确定所述目标数据集为所述新增数据集,则将所述新增数据集转换为所述压缩格式的所述目标数据;在所述目标磁盘中确定新增存储区域以存储所述目标数据;
删除内存中存储的所述新增数据集或所述更新数据集。
在上述实现过程中,先基于标识信息在存有多个历史数据的目标磁盘中进行查询,若标识信息与任一历史数据的历史标识相同,则表征目标数据集为对目标磁盘中的已有数据集进行更新的更新数据集,对更新数据集进行格式转换,并将得到的目标数据存储在相应的历史存储区域中以对进行更新的数据集进行替换,实现数据集的更新;若标识信息与所有历史数据的历史标识都不相同,则表征目标数据集为新增加的新增数据集,对新增数据集进行格式转换,并将得到的目标数据存储在新划分的新增存储区域中实现数据集的添加。并且,为了进一步地减小数据集所占用的内存,对目标数据进行存储后,还可以将内存中暂存的原始格式的目标数据集进行删除。在进行存储时,可以根据具有唯一性的标识信息,对不同类型的数据集进行对应地识别和存储,以将数据集转换为不受内存限制的数据格式,并存储在磁盘中,并在格式转换和存储后对内存中的数据集进行删除,有效地提高了磁盘中数据进行加载的效率,并减小了对内存的占用。
可选地,所述基于所述标识信息向客户端提供所述目标磁盘中的所述目标数据,包括:
根据接收的调用请求在所述目标磁盘中确定相应的请求数据以及与所述请求数据对应的目标客户端;
在内存中维护所述请求数据对应的第一数据集对象,并确定所述目标客户端对应的第一偏移信息,以供所述目标客户端基于所述第一数据集对象和所述第一偏移信息获取所述请求数据。
在上述实现过程中,为了向客户端提供所需的目标数据,可以先根据接收的调用请求确定对应的请求数据和需要数据的目标客户端,再基于运行的数据库服务在内存中维护一个已被加载的请求数据的第一数据集对象,并确定目标客户端对数据进行读取时的第一偏移信息,以允许目标客户端基于第一偏移信息分批获取第一数据集对象中的请求数据。能够根据客户端实际的调用情况确定所需的数据,并维护相应的对象以供客户端进行分批读取,有效地提高了客户端获取数据的效率,减小了读取数据时所占用的内存大小。
可选地,所述方法还包括:
在预设时间段内存储所述第一数据集对象;
若判定所述预设时间段内存在对所述第一数据集对象进行请求的新增客户端,则复用所述第一数据集对象以供所述新增客户端获取所述请求数据;
对超过所述预设时间段内的所述第一数据集对象进行清除。
在上述实现过程中,为了进一步地减少读取数据时的内存占用大小,可以将第一数据集对象预留预设时间段,以在预设时间段内判断是否存在对第一数据集对象进行请求的新增客户端,若存在,则直接复用已加载的第一数据集对象以供新增客户端获取数据,并对预留超过预设时间段的第一数据集对象进行清除。通过预留的操作,减少了重复加载数据集对象所损耗的时间以及重复加载时所占用的内存大小,提高了后续的客户端基于已加载数据集对象中数据的获取效率。
可选地,所述根据接收的调用请求在所述目标磁盘中确定相应的请求数据以及与所述请求数据对应的目标客户端,包括:
基于所述客户端调用的数据获取接口,接收多个所述客户端发送的所述调用请求;其中,所述调用请求中包括请求信息、请求标识、应用接口和网络地址;
根据所述请求信息和所述目标磁盘中每个所述目标数据的元信息,在所述目标磁盘中确定对应的查询数据;其中,所述元信息包括:所述目标数据的所述标识信息和文件参数;
将所述请求标识与所述元信息中的所述标识信息进行对比,若所述请求标识与所述标识信息相同,则以所述查询数据作为所述请求数据;
基于所述应用接口和所述网络地址确定所述目标客户端。
在上述实现过程中,为了对数据和请求的客户端进行识别,可以根据调用的数据获取接口,接收多个调用请求,再根据调用请求中的请求信息和目标数据的元信息中的文件参数进行对比,以在目标磁盘中的多个目标数据中确定与请求对应的查询数据,并且,考虑到数据集的变化情况,还可以根据请求标识与元信息中的标识信息进行对比,在请求标识与标识信息一致时,则以查询数据作为用户需求的请求数据,并基于调用请求中的应用接口和网络地址确定相应的目标客户端。能够对多个不同的客户端发出的调用请求进行解析和处理,以确定每个调用任务对应的客户端及其所需的数据,从而维护相应的数据集实例供客户端读取数据,能够为多个客户端提供数据库服务,适用于多个客户端的调用场景。
可选地,所述方法还包括:
对目标时间段内的所有所述请求标识进行统计;
若多个所述请求标识相同,则基于多个所述请求标识在所述目标磁盘中确定共用数据;
确定多个相同的所述请求标识对应的多个共用客户端;
在内存中维护所述共用数据对应的第二数据集对象,并确定每个所述共用客户端对应的第二偏移信息,以供多个所述共用客户端基于所述第二数据集对象和对应的所述第二偏移信息同时获取所述共用数据。
在上述实现过程中,在进行数据读取时,可能存在多个客户端同时请求同一个数据集的情况,因此,可以对目标时间段内解析的所有请求标识进行统计,在具有多个相同的请求标识时,则表征多个客户端同时调用同一个请求数据,可以根据请求标识在目标磁盘中确定相应的共用数据,并确定同时调用的多个共用客户端,在内存中维护一个共用数据的第二数据集对象,并为每个共用客户端分配一个相应的第二偏移信息,以供每个共用客户端基于相应的第二偏移信息,在同一个第二数据集对象中各自同时且分批地读取相应的共用数据。通过共用一个数据集对象的方式为多个客户端提供数据,有效地减少了重复加载相同的数据集对象时所占用的内存。
可选地,所述根据每个所述目标数据集生成对应的标识信息,包括:
将每个所述目标数据集以原始格式暂存在内存中;
基于所述内存中存储的每个所述目标数据集进行哈希计算,得到哈希值作为每个所述目标数据集唯一的所述标识信息;
向所述客户端反馈所述标识信息。
在上述实现过程中,从前端获取目标数据集后,可以将每个目标数据集以原始的数据格式暂存在内存中以待后续处理。可以从内存中读取每个目标数据集并进行哈希计算,得到相应的哈希值作为表征目标数据集的身份的标识信息,并将标识信息反馈给客户端,以供客户端在需要请求数据时将标识信息添加到调用请求中进行调用。能够根据数据集的实际内容生成具有唯一性的标识信息,从而对数据库中的每个数据集进行针对性处理,有效地提高了对数据集进行处理时的有效性。
第二方面,本申请实施例还提供了一种数据集处理装置,所述装置包括:接收模块、标识模块、转换模块和提供模块;
所述接收模块用于基于接收接口获取前端发送的目标数据集;
所述标识模块用于根据每个所述目标数据集生成对应的标识信息;
所述转换模块用于基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,所述压缩格式包括:Arrow或Parquet;
所述提供模块用于基于所述标识信息向客户端提供所述目标磁盘中的所述目标数据。
在上述实现过程中,通过接收模块基于接收接口接收前端发送的需要进行存储的目标数据集,通过标识模块确定每个目标数据集具有唯一性的标识信息,以对目标数据集的身份进行标识,通过转换模块将目标数据集转换为不受内存限制的压缩格式,并结合身份的标识信息将数据存储在磁盘中,通过提供模块为客户端提供相应的目标数据进行模型训练等使用。
第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述数据集处理方法中任一实现方式中的步骤。
第四方面,本申请实施例还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述数据集处理方法中任一实现方式中的步骤。
综上所述,本申请实施例提供了一种数据集处理方法、装置及计算机可读取存储介质,通过对数据集进行格式转换的方式对数据集进行存储,并结合唯一的标识信息进行数据提取,有效地提高了数据集的加载效率,减小了加载数据集时的内存占用率,支持在内存资源较小的设备上使用大型数据集,适用于多种不同的加载场景,满足用户的多种训练需求。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种电子设备的方框示意图;
图2为本申请实施例提供的一种数据集处理方法的流程示意图;
图3为本申请实施例提供的一种步骤S400的详细流程示意图;
图4为本申请实施例提供的一种步骤S500的详细流程示意图;
图5为本申请实施例提供的另一种数据集处理方法的流程示意图;
图6为本申请实施例提供的一种步骤S510的详细流程示意图;
图7为本申请实施例提供的又一种数据集处理方法的流程示意图;
图8为本申请实施例提供的一种步骤S300的详细流程示意图;
图9为本申请实施例提供的一种数据集处理装置的结构示意图。
图标:100-电子设备;111-存储器;112-存储控制器;113-处理器;114-外设接口;115-输入输出单元;116-显示单元;600-数据集处理装置;610-接收模块;620-标识模块;630-转换模块;640-提供模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请实施例的一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
传统的人工智能数据集读取方案,通常是从数据库或通过磁盘进行获取。当读取的数据库文件和磁盘文件过大时,例如从mysql数据库中一次性加载1个G大小的表内容时,可能需要1分钟时间,而实际算法执行时间只需要1-3s,严重影响整体计算周期时间。且在数据加载过程中,由于所有数据量都会被加载到内存中,当同一时间运行的算法数较多时,就会导致服务器资源紧张,影响整体运行效率。
因此,目前获取数据集时存在数据集加载时间过久、内存占用过大等问题,无法满足用户的训练需求。
为了解决上述问题,本申请实施例提供了一种数据集处理方法,应用于数据库服务端,数据库服务端可以与多个客户端通信连接,以供客户端获取相应的数据集进行模型训练等操作。数据库服务端可以为服务器、云端等具有存储和管理数据功能的后端电子设备,例如datasrv,能够提高数据集的加载效率,满足用户的多种数据需求。
可选地,请参阅图1,图1为本申请实施例提供的一种电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
上述的存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可执行模块。
其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,处理器113在接收到执行指令后,执行程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器,也可以是任何常规的处理器等。
上述的外设接口114将各种输入/输出装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元115用于提供给用户输入数据。输入输出单元115可以是,但不限于,鼠标和键盘等。
上述的显示单元116在电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。在本申请实施例中,显示单元116可以显示内存占用情况、每个数据集对象的加载情况以及每个客户端对数据集进行调用的情况、进度等多种信息。
本实施例中的电子设备可以用于执行本申请实施例提供的各个数据集处理方法中的各个步骤。下面通过几个实施例详细描述数据集处理方法的实现过程。
请参阅图2,图2为本申请实施例提供的一种数据集处理方法的流程示意图,该方法可以包括步骤S200-S500。
步骤S200,基于接收接口,获取前端发送的目标数据集。
其中,可以通过与前端设备连接的接收接口,接收前端发送的需要进行存储的目标数据集。前端设备可以为对数据进行采集和分类的设备,例如,采集图片的前端设备、采集表格数据的前端设备等。
需要说明的是,目标数据集可以为联邦学习数据集,联邦学习数据集为多方利用各自的数据集相互协作地训练机器学习模型的数据集。这些数据集在训练过程中不会离开本地,而是通过隐私保护技术融合多方数据信息,以协同构建全局模型进行分布式训练。在模型训练过程中,模型的相关信息能够在各参与方之间交换(交换方式可以是明文或加密的),但本地训练数据不会离开本地。训练好的联邦学习模型可以在各数据参与方之间共享和部署使用。
可选地,目标数据集是一组相关的数据样本,通常用于机器学习、数据挖掘、统计分析等领域。目标数据集可以是数字、文本、图像、音频或视频等形式的数据,用于训练和测试机器学习算法和模型。在机器学习中,数据集通常被划分为训练集、验证集和测试集三个子集。训练集用于训练机器学习模型,验证集用于选择和调整模型的超参数和结构,测试集用于评估模型的性能和准确度。
需要说明的是,其中,接收接口可以包括上传接口和更新接口;目标数据集可以包括:新增数据集和更新数据集;基于接收接口获取前端发送的目标数据集的方式,可以包括:基于前端调用的上传接口接收新增数据集;基于前端调用的更新接口接收更新数据集。目标数据集具有多种不同的类型,可以包括新增到数据库的数据集以及对数据库中已有的数据集进行更新的数据集。由于数据集类型的不同,数据集的来源也可能不同,因此,可以调用不同的接收接口对不同类型的目标数据集进行接收,以实现多种类数据集的正常接收。
步骤S300,根据每个目标数据集生成对应的标识信息。
其中,由于数据库中具有多种不同类型的目标数据集,为了对每个目标数据集进行区分处理,可以根据每个目标数据集的实际信息,确定表征目标数据集身份的唯一性的标识信息。
可选地,标识信息可以为数字id,也可以为二维码等条码信息。
步骤S400,基于标识信息,将目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中。
其中,接收的目标数据集的原始格式为结构化格式或表格化格式,为了提高对数据集进行加载的效率,可以将目标数据集转换为压缩格式的目标数据,压缩格式可以包括:Arrow或Parquet等不受内存限制的数据格式,能够结合身份的标识信息,将目标数据存储在目标磁盘的对应区域处。
需要说明的是,Apache Arrow是一种基于内存的列式数据结构,以列式的memorylayout(内存布局,即存储器的配置或内存的组织方式。它描述了程序中不同类型的变量在内存中的存储方式,以及它们之间的相对位置。对于一个程序,其内存布局可能会因操作系统、编译器的不同而有所不同)存储数据,在Apache Arrow 格式的支持下,可以通过zero-copy read(零拷贝读取,即一种I/O操作优化技术,它允许计算机在执行操作时,不需要将数据从某处内存复制到另一个特定的区域,也不需要将其从内核空间复制到用户空间。这种技术可以减少数据传输过程中的中间拷贝次数,从而有效地提高数据传输效率。它利用DMA,即直接内存访问技术来实现数据的传输,减少了用户态与内核态的切换,以节约切换所需的时间)来处理大型数据集,而不受内存限制,从而实现更好的加载速度和效率。其中,Apache Arrow存在以下优势:Arrow的标准格式允许zero-copy read,这实际消除了所需的序列化开销(包括时间开销和空间开销;时间开销:在序列化过程中,python的实现机制、类加载反射机制会影响时间开销;空间开销:这主要是指序列化过程中动态的内存空间占用量,以及序列化后产出的文件大小);Arrow是面向列的,因此在查询和处理数据切片或列时,它的速度更快;Arrow允许copy-free(无拷贝,它指数据结构或系统在进行某些操作时不需要进行数据复制。这主要应用在大数据和并行计算领域,特别是在I/O操作和内存管理中。无拷贝可以减少数据传输过程中的中间拷贝次数,从而提高数据传输效率)地移交给标准的机器学习工具,如Numpy,Pandas,PyTorch等;Arrow支持多种列类型(可以为复杂的嵌套类型)。使用Arrow作为局部缓存的压缩格式,可以由on-disk cache(磁盘缓存)来支持,这是由于fast lookup(快速查找)的内存映射。这种架构允许在内存相对较小的机器上使用大型数据集。Parquet是一种开源的列式存储格式,可以降低存储空间和提高IO效率,支持嵌套格式数据,可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量,并且只读取需要的列,支持向量运算,能够获取更好的扫描性能。
示例地,客户端可以调用datasrv的上传接口,上传新增数据集,datasrv在接收完客户端上传的数据集后,以压缩格式,例如Arrow或Parquet进行文件存储,完成后会向客户端返回带有唯一标识的标识信息,标识信息可以包含在元信息中,元信息可以记为dataset_meta。处理过程的代码可以包括:
self,
req_info:datamodels.DataNodeRequsetLoaderRequestBody)->datamodels.DataNodeRequsetLoaderResponseBody:
'''
input:
req_info:dict
data_path = req_info['data_path']
data_type = req_info['data_type']
dataset_config = req_info['dataset_config']
dataset_size = req_info['dataset_size']
return:
dataset_key:str
'''
data_path = req_info.dataset_id # 传入的数据地址
config = req_info.loader_config # 传入的 loader 配置
dataset_size = req_info.dataset_size #传入的获取dataset的batch_size
if data_path not in self.dataset_infos.keys():
#不存在对应的data_path,进行dataset文件的存储;
dataset_info = DatasetInfo(dataset_size)
self.dataset_infos.update({data_path: dataset_info})
# check cache size
if config.cache_mode:
new_dataset_cache_size = config.cache_size
else:
new_dataset_cache_size = dataset_size + 1
# 生成唯一的dl_key用来确定唯一dataset
Ifself.dataset_infos[data_path].max_cache_size>=new_dataset_cache_size
# type:ignore
dl_key = self.dataset_infos[data_path].max_cache_dl_key # type:ignore
else:
dl_key = self._make_dataset_loader(req_info)
res_body=datamodels.DataNodeRequsetLoaderResponseBody(status=consts.CallStatus.SUCCEED, dl_key=dl_key)
return res_body。
示例地,客户端还可以调用datasrv的更新接口,上传新增数据集以及对应的dataset_meta,datasrv在接收完客户端上传的新增数据集后,以Arrow或Parquet进行文件存储,完成后会向客户端返回成功标志。上传过程的代码与前述类似,不再进行赘述。
步骤S500,基于标识信息,向客户端提供目标磁盘中的目标数据。
其中,当外部客户端调用服务端相关的数据获取接口时,服务端可以根据对应数据集的标识信息,准许外部的客户端从目标磁盘的对应区域中读取相应的目标数据,以获取相对应的数据集信息。
可选地,可以使用pyArrow进行处理,pyArrow是一个Python库,用于在ApacheArrow格式下高效处理大规模数据集。它是一个高效的Python库,用于在Python应用程序和Apache Arrow之间进行交互。使用pyArrow的flight框架作为与外部交互的接口服务。pyArrow flight基于grpc service实现,客户端可以通过调用指定的接口来调用服务端的自定义接口,完成对相关数据集的管理。Flight框架自动集成了pyArrow对于Arrow格式的相关操作,可以直接读取Arrow格式的相关数据。
可选地,数据库服务端可以包括两部分:Infrastructure layer(基础层):数据存储层,所有数据集数据都以Arrow格式存储于硬盘中,由核心层进行管理;core layer(核心层):数据管理交互层,由pyArrow flight提供接口用来管理数据集上传、读取、更新能力。
示例地,现有技术中,正常数据库加载1个G数据所需的时间约为30s,而使用本申请提供的方案进行数据加载所需的时间约为0.5s,从而有效地提高数据加载的效率。
在图2所示的实施例中,过改变数据格式的方式,有效地提高了数据库服务器中数据集的加载效率,减小了加载数据集时的内存占用率,支持在内存资源较小的设备上使用大型数据集,适用于多种不同的加载场景,满足用户的多种训练需求。
可选地,请参阅图3,图3为本申请实施例提供的一种步骤S400的详细流程示意图,步骤S400可以包括步骤S410-S440。
步骤S410,基于标识信息,在目标磁盘中存储的所有历史数据对应的所有历史标识中进行查询。
其中,由于标识信息的唯一性,为了在目标磁盘中对数据集进行对应地存储,可以先基于标识信息在存有多个历史数据的目标磁盘中进行查询,以对不同类型的目标数据集进行分类处理。
步骤S420,若判定存在与标识信息相同的历史标识,则确定目标数据集为更新数据集,将更新数据集转换为压缩格式的目标数据;在目标磁盘中确定历史标识对应的目标历史数据的历史存储区域;将目标数据存储至历史存储区域中,以替换历史存储区域中的目标历史数据。
其中,若标识信息与任一历史数据的历史标识相同,则表征目标数据集为对目标磁盘中的已有数据集进行更新的更新数据集,对更新数据集进行格式转换,并将得到的目标数据存储在相应的历史存储区域中以对进行更新的数据集进行替换,实现数据集的更新。
可选地,历史存储区域可以为目标历史数据对应存储的文件夹。
步骤S430,若判定不存在与标识信息相同的历史标识,则确定目标数据集为新增数据集,则将新增数据集转换为压缩格式的目标数据;在目标磁盘中确定新增存储区域以存储目标数据。
其中,若标识信息与所有历史数据的历史标识都不相同,则表征目标数据集为新增加的新增数据集,对新增数据集进行格式转换,并将得到的目标数据存储在新划分的新增存储区域中实现数据集的添加。
可选地,新增存储区域可以为在目标磁盘中新增的文件夹。
步骤S440,删除内存中存储的新增数据集或更新数据集。
其中,为了进一步地减小数据集所占用的内存,对目标数据进行存储后,还可以将内存中暂存的原始格式的目标数据集进行删除。
在图3所示的实施例中,在进行存储时,可以根据具有唯一性的标识信息,对不同类型的数据集进行对应地识别和存储,以将数据集转换为不受内存限制的数据格式,并存储在磁盘中,并在格式转换和存储后对内存中的数据集进行删除,有效地提高了磁盘中数据进行加载的效率,并减小了对内存的占用。
可选地,请参阅图4,图4为本申请实施例提供的一种步骤S500的详细流程示意图,步骤S500可以包括步骤S510-S520。
步骤S510,根据接收的调用请求在目标磁盘中确定相应的请求数据以及与请求数据对应的目标客户端。
其中,由于服务端通常与多个客户端连接,为多个客户端提供数据库服务,因此,服务端中通常需要执行多个客户端的不同调用任务。为了向客户端提供所需的目标数据,可以先根据接收的调用请求确定对应的请求数据和需要数据的目标客户端。
步骤S520,在内存中维护请求数据对应的第一数据集对象,并确定目标客户端对应的第一偏移信息,以供目标客户端基于第一数据集对象和第一偏移信息获取请求数据。
其中,可以基于运行的数据库服务在内存中维护一个已被加载的请求数据的第一数据集对象,并确定目标客户端对数据进行读取时的第一偏移信息,以允许目标客户端基于第一偏移信息分批获取第一数据集对象中的请求数据。
可选地,第一偏移信息可以为读取数据的行数的游标信息,以通过不同大小的游标信息对数据集进行分批读取。
可选地,第一数据集对象可以为内存中已被加载的数据集实例。
示例地,客户端可以调用服务端的数据获取接口,传入相应的调用请求,服务端可以根据调用请求确定所需的请求数据,通过pyArrow提供的方法读取相关数据,完成后会向客户端返回对应数据集,数据获取过程的代码可以包括:
async def _fetch_batch(self, req_info: dict):
# 根据传过来的dl_key,返回对应数据集;
dl_key = req_info['dl_key']
indexes = req_info['indexes']
task_list =[]
if req_info['is_preloading']:
task=asyncio.create_task(self.dataset_loaders[dl_key].loader.preload(req_info['preload_indexes']))
task_list.append(task)
# 创建dataset loader 获取Arrow格式的数据;
load_task=asyncio.create_task(self.dataset_loaders[dl_key].loader.fetch_batch(indexes))
task_list.append(load_task)
await asyncio.gather(task_list)
self.dataset_loaders[dl_key].last_hit_time = time.time()
return load_task.result()。
在图4所示的实施例中,能够根据客户端实际的调用情况确定所需的数据,并维护相应的对象以供客户端进行分批读取,有效地提高了客户端获取数据的效率,减小了读取数据时所占用的内存大小。
可选地,请参阅图5,图5为本申请实施例提供的另一种数据集处理方法的流程示意图,该方法还可以包括步骤S531-S533。
步骤S531,在预设时间段内存储第一数据集对象。
其中,为了进一步地减少读取数据时的内存占用大小,可以将第一数据集对象预留预设时间段,以减少数据集的加载次数。
需要说明的是,预设时间段可以为根据服务端的实际内存情况和用户需求等设置和调整的时间值。
步骤S532,若判定预设时间段内存在对第一数据集对象进行请求的新增客户端,则复用第一数据集对象以供新增客户端获取请求数据。
其中,可以在预设时间段内判断是否存在对第一数据集对象进行请求的新增客户端,若存在,则直接复用已加载的第一数据集对象以供新增客户端获取数据,无需再加载重复的数据集对象。
步骤S533,对超过预设时间段内的第一数据集对象进行清除。
其中,为了减少对内存的占用,每当第一数据集对象的预留时间超过预设时间段时,可以对存储超时的第一数据集对象进行清除。
可选地,对第一数据集对象进行复用和删除的过程代码可以包括:
class DataNodeServer(pf.FlightServerBase):
def__init__(self,location:str,config: datamodels.DataNodeConfig,kwargs) ->None:
"""
Args:
kwargs: some options defined in Arrow.flight like auth_handler,tls_certificates and verify_client
https://github.com/apache/Arrow/blob/master/python/pyArrow/_flight.pyx
check the definition of FlightServerBase
"""
super(DataNodeServer, self).__init__(location, kwargs)
self.location = location
self.connected = 0
self.connected_info = None
# ------------------ loader schedule ------------------ #
self.dataset_lease = config.dataset_lease # 一个dataset可以空闲多久
self.clean_interval = config.clean_interval# server多久对所有dataset进行一次检查
io.load_reader()
# dl_key : DatasetLoader
self.dataset_loaders: Dict[str, DatasetLoader] = {}
# data_path : DatasetInfo
self.dataset_infos: Dict[str, DatasetInfo] = {}
# 因为一次do_get只能发送一个object,所以对同时从dataset获得的x,y,只能调用两次do_get;
# 将y暂存,从而避免一次fetch_batch要访问dataset实例两次的情况;
# client获得y后从暂存中弹出,节约空间;
self.label_cache: Dict[str, Any] = {}
self._clean_loader_th = threading.Thread(target=self._clean_loaders)# 开启一个线程用于检查超时的loader
self._clean_loader_th.start()
def _clean_loaders(self):
'''
每过去一个clean_interval的时间,删除一个dataset_lease时间内都闲置的loader;
'''
while 1:
cur_time = time.time()
for dl_key, loader in self.dataset_loaders.items():
if cur_time - loader.last_hit_time>self.dataset_lease:
self._del_loader(dl_key)
time.sleep(self.clean_interval)
在图5所示的实施例中,通过预留的操作,减少了重复加载数据集对象所损耗的时间以及重复加载时所占用的内存大小,提高了后续的客户端基于已加载数据集对象中数据的获取效率。
可选地,请参阅图6,图6为本申请实施例提供的一种步骤S510的详细流程示意图,步骤S510可以包括步骤S511-S514。
步骤S511,基于客户端调用的数据获取接口,接收多个客户端发送的调用请求。
其中,为了对数据和请求的客户端进行识别,可以根据调用的数据获取接口,接收多个调用请求,调用请求中可以包括客户端对数据进行请求的请求信息、请求标识以及客户端对应的应用接口和网络地址。
可选地,请求信息中可以包含数据的名称、编号、类型等相关信息,请求标识可以为与请求信息对应的标识类信息。
步骤S512,根据请求信息和目标磁盘中每个目标数据的元信息,在目标磁盘中确定对应的查询数据。
其中,元信息中可以包括:目标数据的标识信息和对应的文件参数,文件参数可以为目标数据的名称、存储地址、文件类型等多种参数。用户在获取数据时,可以先根据元信息,在目标磁盘内查询到对应的压缩格式的查询数据,再根据其中的标识信息确定是否为用户提供目标数据。
可选地,在进行处理时,可以根据请求信息与目标磁盘中多个目标数据的元信息中的文件参数进行对比,确定与请求信息中名称、编号、类型等相同的目标数据,并根据元信息中的文件存储地址查询到该目标数据,将其作为对应的查询数据。
步骤S513,将请求标识与元信息中的标识信息进行对比,若请求标识与标识信息相同,则以查询数据作为请求数据。
其中,考虑到数据集的变化情况,还可以根据请求标识与元信息中的标识信息进行对比,在请求标识与标识信息一致时,则以查询数据作为用户需求的请求数据。
可选地,在请求标识与标识信息不一致时,则表征查询数据中的数据已被更新或产生其他变化,可以将这一情况反馈给客户端进行处理。
步骤S514,基于应用接口和网络地址确定目标客户端。
其中,由于服务端与多个客户端连接提供服务,因此,可以基于调用请求中的应用接口和网络地址确定相应的目标客户端。
在图6所示的实施例中,能够对多个不同的客户端发出的调用请求进行解析和处理,以确定每个调用任务对应的客户端及其所需的数据,从而维护相应的数据集实例供客户端读取数据,能够为多个客户端提供数据库服务,适用于多个客户端的调用场景。
可选地,请参阅图7,图7为本申请实施例提供的又一种数据集处理方法的流程示意图,该方法还可以包括步骤S541-S544。
步骤S541,对目标时间段内的所有请求标识进行统计。
其中,在进行数据读取时,可能存在多个客户端同时请求同一个数据集的情况,因此,可以对目标时间段内解析的所有请求标识进行统计,以对是否具有多个客户端同时请求同一数据集的情况进行判断。
可选地,目标时间段也可以为根据服务端的实际内存情况和需求设置的时间值。
步骤S542,若多个请求标识相同,则基于多个请求标识在目标磁盘中确定共用数据。
步骤S543,确定多个相同的请求标识对应的多个共用客户端。
其中,在具有多个相同的请求标识时,则表征多个客户端同时调用同一个请求数据,可以根据请求标识在目标磁盘中确定相应的共用数据,并确定同时调用的多个共用客户端。
需要说明的是,确定共用数据与共用客户端的方式与图6中的类似,不再进行赘述。
步骤S544,在内存中维护共用数据对应的第二数据集对象,并确定每个共用客户端对应的第二偏移信息,以供多个共用客户端基于第二数据集对象和对应的第二偏移信息同时获取共用数据。
其中,可以在内存中维护一个共用数据的第二数据集对象,并为每个共用客户端分配一个相应的第二偏移信息,以供每个共用客户端基于相应的第二偏移信息,在同一个第二数据集对象中各自同时且分批地读取相应的共用数据。
可选地,第二偏移信息也可以为对应的游标信息,多个共用客户端可以以不同的游标信息同时分批读取数据。
示例地,在3个客户端同时请求一个大小为1个G数据集时,现有技术中,数据库加载的内存占用约为2.5G,而本申请中的内存占用约为5m,能够大幅减小所占用的内存大小。
在图7所示的实施例中,通过共用一个数据集对象的方式为多个客户端提供数据,有效地减少了重复加载相同的数据集对象时所占用的内存。
可选地,请参阅图8,图8为本申请实施例提供的一种步骤S300的详细流程示意图,步骤S300可以包括步骤S310-S330。
步骤S310,将每个目标数据集以原始格式暂存在内存中。
其中,从前端获取目标数据集后,可以将每个目标数据集以原始的数据格式暂存在内存中以待后续处理。
可选地,原始格式由目标数据集的实际情况确定,例如,原始格式可以为结构化格式或表格化格式等。
步骤S320,基于内存中存储的每个目标数据集进行哈希计算,得到哈希值作为每个目标数据集唯一的标识信息。
其中,可以从内存中读取每个目标数据集并进行哈希计算,得到相应的哈希值作为表征目标数据集的身份的标识信息。
步骤S330,向客户端反馈标识信息。
其中,服务端可以将确定的标识信息反馈给客户端,以供客户端在需要请求数据时将标识信息添加到调用请求中进行调用。
在图8所示的实施例中,能够根据数据集的实际内容生成具有唯一性的标识信息,从而对数据库中的每个数据集进行针对性处理,有效地提高了对数据集进行处理时的有效性。
请参阅图9,图9为本申请实施例提供的一种数据集处理装置的结构示意图,数据集处理装置600可以包括:接收模块610、标识模块620、转换模块630和提供模块640;
接收模块610用于基于接收接口获取前端发送的目标数据集;
标识模块620用于根据每个目标数据集生成对应的标识信息;
转换模块630用于基于标识信息,将目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,压缩格式包括:Arrow或Parquet;
提供模块640用于基于标识信息向客户端提供目标磁盘中的目标数据。
在一可选的实施方式中,其中,接收接口包括上传接口和更新接口;目标数据集包括:新增数据集和更新数据集;接收模块610具体用于:基于前端调用的上传接口接收新增数据集;基于前端调用的更新接口接收更新数据集。
在一可选的实施方式中,转换模块630具体用于:基于标识信息,在目标磁盘中存储的所有历史数据对应的所有历史标识中进行查询;若判定存在与标识信息相同的历史标识,则确定目标数据集为更新数据集,将更新数据集转换为压缩格式的目标数据;在目标磁盘中确定历史标识对应的目标历史数据的历史存储区域;将目标数据存储至历史存储区域中,以替换历史存储区域中的目标历史数据;若判定不存在与标识信息相同的历史标识,则确定目标数据集为新增数据集,则将新增数据集转换为压缩格式的目标数据;在目标磁盘中确定新增存储区域以存储目标数据;删除内存中存储的新增数据集或更新数据集。
在一可选的实施方式中,提供模块640具体用于:根据接收的调用请求在目标磁盘中确定相应的请求数据以及与请求数据对应的目标客户端;在内存中维护请求数据对应的第一数据集对象,并确定目标客户端对应的第一偏移信息,以供目标客户端基于第一数据集对象和第一偏移信息获取请求数据。
在一可选的实施方式中,提供模块640还用于:在预设时间段内存储第一数据集对象;若判定预设时间段内存在对第一数据集对象进行请求的新增客户端,则复用第一数据集对象以供新增客户端获取请求数据;对超过预设时间段内的第一数据集对象进行清除。
在一可选的实施方式中,提供模块640具体用于:基于客户端调用的数据获取接口,接收多个客户端发送的调用请求;其中,调用请求中包括请求信息、请求标识、应用接口和网络地址;根据请求信息和目标磁盘中每个目标数据的元信息,在目标磁盘中确定对应的查询数据;其中,元信息包括:目标数据的标识信息和文件参数;将请求标识与元信息中的标识信息进行对比,若请求标识与标识信息相同,则以查询数据作为请求数据;基于应用接口和网络地址确定目标客户端。
在一可选的实施方式中,提供模块640还用于:对目标时间段内的所有请求标识进行统计;若多个请求标识相同,则基于多个请求标识在目标磁盘中确定共用数据;确定多个相同的请求标识对应的多个共用客户端;在内存中维护共用数据对应的第二数据集对象,并确定每个共用客户端对应的第二偏移信息,以供多个共用客户端基于第二数据集对象和对应的第二偏移信息同时获取共用数据。
在一可选的实施方式中,标识模块620具体用于:将每个目标数据集以原始格式暂存在内存中;基于内存中存储的每个目标数据集进行哈希计算,得到哈希值作为每个目标数据集唯一的标识信息;向客户端反馈标识信息。
由于本申请实施例中的数据集处理装置600解决问题的原理与前述的数据集处理方法的实施例相似,因此本实施例中的数据集处理装置600的实施可以参见上述数据集处理方法的实施例中的描述,重复之处不再赘述。
本申请实施例还提供了一种计算机可读取存储介质,可读取存储介质中存储有计算机程序指令,计算机程序指令被一处理器读取并运行时,执行本实施例提供的数据集处理方法中任一项方法中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (9)

1.一种数据集处理方法,其特征在于,所述方法包括:
基于接收接口,获取前端发送的目标数据集;
根据每个所述目标数据集生成对应的标识信息;
基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,所述压缩格式包括:Arrow或Parquet;
基于所述标识信息,向客户端提供所述目标磁盘中的所述目标数据;
其中,所述基于所述标识信息向客户端提供所述目标磁盘中的所述目标数据,包括:根据接收的调用请求在所述目标磁盘中确定相应的请求数据以及与所述请求数据对应的目标客户端;在内存中维护所述请求数据对应的第一数据集对象,并确定所述目标客户端对应的第一偏移信息,以供所述目标客户端基于所述第一数据集对象和所述第一偏移信息获取所述请求数据;其中,所述第一数据集对象包括所述内存中已被加载的数据集实例,所述第一偏移信息包括读取数据的行数的游标信息,以基于所述第一偏移信息中不同大小的所述游标信息对所述第一数据集对象中的数据集进行分批读取。
2.根据权利要求1所述的方法,其特征在于,其中,所述接收接口包括上传接口和更新接口;所述目标数据集包括:新增数据集和更新数据集;
所述基于接收接口获取前端发送的目标数据集,包括:
基于前端调用的所述上传接口接收所述新增数据集;
基于前端调用的所述更新接口接收所述更新数据集。
3.根据权利要求2所述的方法,其特征在于,所述基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中,包括:
基于所述标识信息,在所述目标磁盘中存储的所有历史数据对应的所有历史标识中进行查询;
若判定存在与所述标识信息相同的所述历史标识,则确定所述目标数据集为所述更新数据集,将所述更新数据集转换为所述压缩格式的所述目标数据;在所述目标磁盘中确定所述历史标识对应的目标历史数据的历史存储区域;将所述目标数据存储至所述历史存储区域中,以替换所述历史存储区域中的所述目标历史数据;
若判定不存在与所述标识信息相同的所述历史标识,则确定所述目标数据集为所述新增数据集,则将所述新增数据集转换为所述压缩格式的所述目标数据;在所述目标磁盘中确定新增存储区域以存储所述目标数据;
删除内存中存储的所述新增数据集或所述更新数据集。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在预设时间段内存储所述第一数据集对象;
若判定所述预设时间段内存在对所述第一数据集对象进行请求的新增客户端,则复用所述第一数据集对象以供所述新增客户端获取所述请求数据;
对超过所述预设时间段内的所述第一数据集对象进行清除。
5.根据权利要求1所述的方法,其特征在于,所述根据接收的调用请求在所述目标磁盘中确定相应的请求数据以及与所述请求数据对应的目标客户端,包括:
基于所述客户端调用的数据获取接口,接收多个所述客户端发送的所述调用请求;其中,所述调用请求中包括请求信息、请求标识、应用接口和网络地址;
根据所述请求信息和所述目标磁盘中每个所述目标数据的元信息,在所述目标磁盘中确定对应的查询数据;其中,所述元信息包括:所述目标数据的所述标识信息和文件参数;
将所述请求标识与所述元信息中的所述标识信息进行对比,若所述请求标识与所述标识信息相同,则以所述查询数据作为所述请求数据;
基于所述应用接口和所述网络地址确定所述目标客户端。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对目标时间段内的所有所述请求标识进行统计;
若多个所述请求标识相同,则基于多个所述请求标识在所述目标磁盘中确定共用数据;
确定多个相同的所述请求标识对应的多个共用客户端;
在内存中维护所述共用数据对应的第二数据集对象,并确定每个所述共用客户端对应的第二偏移信息,以供多个所述共用客户端基于所述第二数据集对象和对应的所述第二偏移信息同时获取所述共用数据。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述根据每个所述目标数据集生成对应的标识信息,包括:
将每个所述目标数据集以原始格式暂存在内存中;
基于所述内存中存储的每个所述目标数据集进行哈希计算,得到哈希值作为每个所述目标数据集唯一的所述标识信息;
向所述客户端反馈所述标识信息。
8.一种数据集处理装置,其特征在于,所述装置包括:接收模块、标识模块、转换模块和提供模块;
所述接收模块用于基于接收接口获取前端发送的目标数据集;
所述标识模块用于根据每个所述目标数据集生成对应的标识信息;
所述转换模块用于基于所述标识信息,将所述目标数据集进行转换得到的压缩格式的目标数据存储在目标磁盘中;其中,所述压缩格式包括:Arrow或Parquet;
所述提供模块用于基于所述标识信息向客户端提供所述目标磁盘中的所述目标数据;
所述提供模块具体用于:根据接收的调用请求在所述目标磁盘中确定相应的请求数据以及与所述请求数据对应的目标客户端;在内存中维护所述请求数据对应的第一数据集对象,并确定所述目标客户端对应的第一偏移信息,以供所述目标客户端基于所述第一数据集对象和所述第一偏移信息获取所述请求数据;其中,所述第一数据集对象包括所述内存中已被加载的数据集实例,所述第一偏移信息包括读取数据的行数的游标信息,以基于所述第一偏移信息中不同大小的所述游标信息对所述第一数据集对象中的数据集进行分批读取。
9.一种计算机可读取存储介质,其特征在于,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
CN202410070275.6A 2024-01-18 2024-01-18 数据集处理方法、装置及计算机可读取存储介质 Active CN117591035B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410070275.6A CN117591035B (zh) 2024-01-18 2024-01-18 数据集处理方法、装置及计算机可读取存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410070275.6A CN117591035B (zh) 2024-01-18 2024-01-18 数据集处理方法、装置及计算机可读取存储介质

Publications (2)

Publication Number Publication Date
CN117591035A CN117591035A (zh) 2024-02-23
CN117591035B true CN117591035B (zh) 2024-05-10

Family

ID=89918649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410070275.6A Active CN117591035B (zh) 2024-01-18 2024-01-18 数据集处理方法、装置及计算机可读取存储介质

Country Status (1)

Country Link
CN (1) CN117591035B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452450A (zh) * 2015-08-06 2017-02-22 Sap欧洲公司 数据压缩
CN107092676A (zh) * 2017-04-18 2017-08-25 广东浪潮大数据研究有限公司 一种数据处理方法及装置
CN107590157A (zh) * 2016-07-08 2018-01-16 腾讯科技(深圳)有限公司 一种数据存储方法、数据查询方法及相关设备
CN110502563A (zh) * 2019-08-26 2019-11-26 腾讯科技(深圳)有限公司 一种多数据源的数据的处理方法及装置、存储介质
CN113298106A (zh) * 2020-07-23 2021-08-24 阿里巴巴集团控股有限公司 一种样本生成方法、装置、服务器及存储介质
CN114925086A (zh) * 2022-05-06 2022-08-19 北京天予运通科技有限公司 自服务数据平台
CN115407936A (zh) * 2022-08-05 2022-11-29 鹏城实验室 一种数据集处理方法、系统、终端及计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188232B2 (en) * 2019-04-29 2021-11-30 EMC IP Holding Company LLC Enhanced storage compression based on activity level
US11429279B2 (en) * 2020-09-16 2022-08-30 Samsung Electronics Co., Ltd. Automatic data separation and placement for compressed data in a storage device
KR20230101922A (ko) * 2020-11-16 2023-07-06 포스퀘어 랩스 인코포레이티드 지리적 공간 데이터 분석 및 시각화 플랫폼
US11941019B2 (en) * 2022-05-31 2024-03-26 Treasure Data, Inc. Accelerated automatic creation of data transformations

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452450A (zh) * 2015-08-06 2017-02-22 Sap欧洲公司 数据压缩
CN107590157A (zh) * 2016-07-08 2018-01-16 腾讯科技(深圳)有限公司 一种数据存储方法、数据查询方法及相关设备
CN107092676A (zh) * 2017-04-18 2017-08-25 广东浪潮大数据研究有限公司 一种数据处理方法及装置
CN110502563A (zh) * 2019-08-26 2019-11-26 腾讯科技(深圳)有限公司 一种多数据源的数据的处理方法及装置、存储介质
CN113298106A (zh) * 2020-07-23 2021-08-24 阿里巴巴集团控股有限公司 一种样本生成方法、装置、服务器及存储介质
CN114925086A (zh) * 2022-05-06 2022-08-19 北京天予运通科技有限公司 自服务数据平台
CN115407936A (zh) * 2022-08-05 2022-11-29 鹏城实验室 一种数据集处理方法、系统、终端及计算机可读存储介质

Also Published As

Publication number Publication date
CN117591035A (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US20230126005A1 (en) Consistent filtering of machine learning data
US20200356901A1 (en) Target variable distribution-based acceptance of machine learning test data sets
JP7009455B2 (ja) 分散イベント処理システムにおけるデータシリアライズ
CN109471863B (zh) 基于分布式数据库的信息查询方法及装置、电子设备
US11507583B2 (en) Tuple extraction using dynamically generated extractor classes
US10366053B1 (en) Consistent randomized record-level splitting of machine learning data
US10713589B1 (en) Consistent sort-based record-level shuffling of machine learning data
US11100420B2 (en) Input processing for machine learning
US20130191523A1 (en) Real-time analytics for large data sets
US11429636B2 (en) Smart elastic scaling based on application scenarios
US20200242118A1 (en) Managing persistent database result sets
US11307984B2 (en) Optimized sorting of variable-length records
Mătăcuţă et al. Big Data Analytics: Analysis of Features and Performance of Big Data Ingestion Tools.
CN116450890A (zh) 图数据处理方法、装置、系统、电子设备及存储介质
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
KR101614890B1 (ko) 멀티 테넌시 이력 생성 방법, 이를 수행하는 멀티 테넌시 이력 생성 서버 및 이를 저장하는 기록매체
CN117591035B (zh) 数据集处理方法、装置及计算机可读取存储介质
CN110837499B (zh) 数据访问处理方法、装置、电子设备和存储介质
US10872103B2 (en) Relevance optimized representative content associated with a data storage system
US11366796B2 (en) Systems and methods for compressing keys in hierarchical data structures
CN114064657A (zh) 多表格整合方法、装置、设备及存储介质
US20230394043A1 (en) Systems and methods for optimizing queries in a data lake
JPWO2018061070A1 (ja) 計算機システム及び分析ソースデータ管理方法
CN117909550A (zh) 查询方法、装置、计算机设备和存储介质
CN116775736A (zh) 一种数据获方法、装置、设备及可读存储介质

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