CN110990476B - 数据导入方法、装置、服务器及存储介质 - Google Patents
数据导入方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110990476B CN110990476B CN201911298400.4A CN201911298400A CN110990476B CN 110990476 B CN110990476 B CN 110990476B CN 201911298400 A CN201911298400 A CN 201911298400A CN 110990476 B CN110990476 B CN 110990476B
- Authority
- CN
- China
- Prior art keywords
- data
- offline
- task
- offline data
- import
- 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
Links
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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据导入方法、装置、服务器及存储介质,属于互联网技术领域。所述方法包括:获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签;根据数据标签,获取数据标签对应的多个离线数据;将多个离线数据,分批导入到线上的多个第一存储设备的内存中;对于每个第一存储设备,从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。通过将数据标签对应的离线数据分批导入到线上的多个第一存储设备的内存中,将内存中热度值低于预设阈值的第一离线数据存储到第一存储设备的磁盘中,极大的增加了线上的数据存储量,从而支持海量级的数据导入。
Description
技术领域
本公开涉及互联网技术领域,特别涉及一种数据导入方法、装置、服务器及存储介质。
背景技术
随着互联网技术的发展,我们进入了大数据时代,无处不在的信息采集终端为我们采集了海量的数据,这些数据经过进一步加工后会形成对业务非常有价值的标签数据,这些标签数据对驱动业务增长意义重大。然而,标签数据等经过加工后的离线数据常存储在线下,线上业务无法直接读取并使用。
相关技术中,将线下的离线数据定期导出成离线文件,将离线文件提交给线上的Master(主代理),Master将离线文件中的离线数据存储到Master的共享内存中;Agent(子代理)从Master的共享内存获取需要的数据。
这种做法存在的问题是由于要将离线数据全部加载到Master的共享内存中,对内存的消耗巨大,且由于内存容纳的数据量有限,这种做法无法适用于海量级的数据导入。
发明内容
本公开实施例提供了一种数据导入方法、装置、服务器及存储介质,能够解决相关技术中将离线数据全部加载到Master的共享内存中,对内存的消耗巨大,且无法适用于海量级的数据导入的问题。所述技术方案如下:
一方面,提供了一种数据导入方法,所述方法包括:
获取用户在任务导入界面配置的导入任务的任务参数,所述任务参数包括数据标签;
根据所述数据标签,获取所述数据标签对应的多个离线数据;
将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中;
对于每个第一存储设备,从所述第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将所述第一离线数据转存到所述第一存储设备的磁盘中。
在一种可能的实现方式中,所述根据所述数据标签,获取所述数据标签对应的多个离线数据,包括:
根据所述数据标签,确定离线数据的数据源;
当所述离线数据的数据源为数据仓库Hive时,通过数据处理工具Spark SQL,从线下的第二存储设备的Hive中流式读取所述数据标签对应的离线数据;
当所述离线数据的数据源为分布式文件***HDFS时,从线下的第二存储设备中读取HDFS中所述数据标签对应的离线数据;
当所述离线数据的数据源为离线文件时,从线下的第二存储设备中获取所述数据标签对应的离线文件,将所述离线文件切割为多个子文件;
当所述离线数据的数据源为线上流式数据时,通过分布式消息发布订阅***kafka获取所述数据标签对应的线上流式数据,利用计算引擎spark对所述线上流式数据进行计算,将经过计算后的所述线上流式数据作为所述离线数据。
在另一种可能的实现方式中,所述将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中,包括:
将所述多个离线数据写入消息队列进行缓存,通过消费线程,从所述消息队列消费离线数据;
对消费的离线数据进行数据格式适配,以及,对所述消费的离线数据进行数据合法性校验;
当所述消费的离线数据合法时,将所述消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
在另一种可能的实现方式中,所述将所述第一离线数据存储到所述第一存储设备的磁盘中,包括:
将所述第一离线数据写入内存队列;
从所述内存队列中获取第一离线数据,将所述第一离线数据存储到所述磁盘中;
记录所述第一离线数据存储到所述磁盘中所需时长;
当所述第一离线数据存储到所述磁盘中所需时长超过预设时长,或者所述内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少所述消费线程的数量;
当所述内存队列中剩余的第一离线数据的数量小于第二预设数量且所述第一离线数据存储到所述磁盘中所需时长未超过预设时长时,则增加所述消费线程的数量。
在另一种可能的实现方式中,所述方法还包括:
当到达统计周期时,获取所述导入任务在所述导入任务开始到当前时刻的第一任务信息、所述导入任务的任务进度信息和所述导入任务在每个采样时间点的第二任务信息,任务信息包括所述导入任务的任务标识、所述导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,所述子任务对应一个或多个离线数据;
显示所述第一任务信息、所述任务进度信息和所述第二任务信息。
在另一种可能的实现方式中,所述将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中之后,所述方法还包括:
当所述第一存储设备的磁盘中的第一离线数据被访问时,记录所述第一离线数据的访问信息,根据所述访问信息,更新所述第一离线数据的热度值;
当所述第一离线数据的热度值高于第二预设阈值时,将所述第一离线数据转存回所述第一存储设备的内存中。
在另一种可能的实现方式中,所述任务参数还包括所述多个离线数据的清理周期;所述方法还包括:
当到达所述清理周期时,将所述第一存储设备的内存中的所述数据标签对应的第一离线数据删除。
另一方面,提供了一种数据导入装置,所述装置包括:
第一获取模块,用于获取用户在任务导入界面配置的导入任务的任务参数,所述任务参数包括数据标签;
第二获取模块,用于根据所述数据标签,获取所述数据标签对应的多个离线数据;
导入模块,用于将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中;
存储模块,用于对于每个第一存储设备,从所述第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将所述第一离线数据转存到所述第一存储设备的磁盘中。
在一种可能的实现方式中,所述第二获取模块,还用于根据所述数据标签,确定离线数据的数据源;当所述离线数据的数据源为数据仓库Hive时,通过数据处理工具SparkSQL,从线下的第二存储设备的Hive中流式读取所述数据标签对应的离线数据;
所述第二获取模块,还用于当所述离线数据的数据源为分布式文件***HDFS时,从线下的第二存储设备中读取HDFS中所述数据标签对应的离线数据;
所述第二获取模块,还用于当所述离线数据的数据源为离线文件时,从线下的第二存储设备中获取所述数据标签对应的离线文件,将所述离线文件切割为多个子文件;
所述第二获取模块,还用于当所述离线数据的数据源为线上流式数据时,通过分布式消息发布订阅***kafka获取所述数据标签对应的线上流式数据,利用计算引擎spark对所述线上流式数据进行计算,将经过计算后的所述线上流式数据作为所述离线数据。
在另一种可能的实现方式中,所述导入模块,还用于将所述多个离线数据写入消息队列进行缓存,通过消费线程,从所述消息队列消费离线数据;对消费的离线数据进行数据格式适配,以及,对所述消费的离线数据进行数据合法性校验;当所述消费的离线数据合法时,将所述消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
在另一种可能的实现方式中,所述存储模块,还用于将所述第一离线数据写入内存队列;从所述内存队列中获取第一离线数据,将所述第一离线数据存储到所述磁盘中;记录所述第一离线数据存储到所述磁盘中所需时长;
当所述第一离线数据存储到所述磁盘中所需时长超过预设时长,或者所述内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少所述消费线程的数量;
当所述内存队列中剩余的第一离线数据的数量小于第二预设数量且所述第一离线数据存储到所述磁盘中所需时长未超过预设时长时,则增加所述消费线程的数量。
在另一种可能的实现方式中,所述装置还包括:第三获取模块,用于当到达统计周期时,获取所述导入任务在所述导入任务开始到当前时刻的第一任务信息、所述导入任务的任务进度信息和所述导入任务在每个采样时间点的第二任务信息,任务信息包括所述导入任务的任务标识、所述导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,所述子任务对应一个或多个离线数据;
显示模块,用于显示所述第一任务信息、所述任务进度信息和所述第二任务信息。
在另一种可能的实现方式中,所述存储模块,还用于当所述第一存储设备的磁盘中的第一离线数据被访问时,记录所述第一离线数据的访问信息,根据所述访问信息,更新所述第一离线数据的热度值;当所述第一离线数据的热度值高于第二预设阈值时,将所述第一离线数据转存回所述第一存储设备的内存中。
在另一种可能的实现方式中,所述任务参数还包括所述多个离线数据的清理周期;所述装置还包括:删除模块,用于当到达所述清理周期时,将所述第一存储设备的内存中的所述数据标签对应的第一离线数据删除。
另一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述任一种可能实现方式中的数据导入方法中所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述任一种可能实现方式中的数据导入方法中服务器执行的操作。
本公开实施例提供的技术方案带来的有益效果是:
在本公开实施例中,获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签;根据数据标签,获取数据标签对应的多个离线数据;将多个离线数据,分批导入到线上的多个第一存储设备的内存中;对于每个第一存储设备,从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。通过将数据标签对应的离线数据分批导入到线上的多个第一存储设备的内存中,将内存中热度值低于预设阈值的第一离线数据存储到第一存储设备的磁盘中,极大的增加了线上的数据存储量,从而支持海量级的数据导入。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种数据导入***的架构示意图;
图2是本公开实施例提供的一种数据导入方法的流程图;
图3是本公开实施例提供的一种数据导入管理界面示意图;
图4是本公开实施例提供的另一种数据导入管理界面示意图;
图5是本公开实施例提供的一种数据导入的流程图;
图6是本公开实施例提供的另一种数据导入的流程图;
图7是本公开实施例提供的另一种数据导入的流程图;
图8是本公开实施例提供的另一种数据导入管理界面示意图;
图9是本公开实施例提供的另一种数据导入管理界面示意图;
图10是本公开实施例提供的一种数据导入装置的结构示意图;
图11是本公开实施例提供的一种服务器的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
为了便于理解本发明的技术过程,首先对一些名词进行解释:
离线数据:存放在分布式文件***的数据,如应用程序、网页上报到后台的曝光、点击、下载等数据,以及经过加工后的标签数据。
离线计算:是在计算开始前已知所有输入数据,输入数据不会产生变化,且在解决一个问题后就要立即得出结果的前提下进行的计算。
DCache:全称为Distributed Memcache,是腾讯自研的分布式内存缓存。
BDB:全称为Banana DB,是腾讯自研的分布式磁盘存储,通常用来落地DCache无法存储的冷数据。
TAF:全称为Tencent Application Framework,是腾讯自研的后台的统一应用框架。
数据导入:与数据上线是同一概念,均指将离线数据经过***传输至线上存储的过程。
图1是本公开实施例提供的一种数据导入***的架构示意图。该数据导入***采用分布式架构。参见图1,该数据导入***包括:服务器、多个第一存储设备和多个第二存储设备。服务器通过有线或者无线网络与多个第一存储设备连接,并且,服务器通过有线或者无线网络与多个第二存储设备连接,从而将存储在多个第二存储设备中的离线数据加载到多个第一存储设备中。
其中,离线数据的数据源可以包括:离线文件、Hive(数据仓库)、HDFS(分布式文件***)、以及线上流式数据等。
服务器包括Spark(计算引擎)、kafka(分布式发布订阅消息***)、数据导入模块;Spark和kafka以及第二存储设备连接,kafka和数据导入模块连接,数据导入模块和第一数据存储模块连接。
Spark用于读取Hive和HDFS中的离线数据,以及将离线数据写入kafka消息队列;kafka消息队列用于缓存离线数据,等待数据被消费;数据导入模块用于对被消费的离线数据进行格式适配和合法性校验,将经过数据格式适配以及数据合法性校验后合法的离线数据分批导入到第一存储设备中;第一存储设备用于存储离线数据。
其中,第一存储设备包括DCache(分布式内存缓存)和BDB(分布式磁盘存储);DCache和BDB以及数据导入模块连接;DCache用于存储数据导入模块发送来的离线数据,BDB用于存储DCache中热度值低于预设阈值的第一离线数据。其中,DCache中包括内存队列,服务器将第一离线数据写入DCache中的内存队列,将内存队列中的第一离线数据存储到BDB。
Spark中包括Spark SQL(数据处理工具);Spark SQL用于流式读取Hive中的离线数据。
kafka还用于获取线上流式数据,Spark还用于对线上流式数据进行计算,将计算后的数据写入kafka消息队列。
服务器还包括kafka-proxy(消息代理);kafka-proxy和kafka以及数据导入模块连接;kafka-proxy用于通过消费线程从Kafka消费离线数据,将消费的离线数据发送至导入服务模块。
服务器还包括文件切割模块;文件切割模块用于接收离线文件以及将离线文件切割成多个子文件,将多个子文件发送至数据导入模块。
数据导入模块还用于监测DCache将第一离线数据存储到BDB的所需时长以及内存队列中剩余的第一离线数据的数量,当所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,向kafka-proxy发送第一消息,第一消息用于通知kafka-proxy减少消费线程的数量;当所需时长未超过预设时长,且内存队列中剩余的第一离线数据的数量小于第二预设数量时,向kafka-proxy发送第二消息,第二消息用于通知kafka-proxy增加消费线程的数量。
服务器还包括统计监控模块;统计监控模块和第一存储设备以及数据导入模块连接;统计监控模块用于当到达统计周期时,获取导入任务在导入任务开始到当前时刻的第一任务信息、导入任务的进度信息和导入任务在每个采样时间点的第二任务信息,任务信息包括导入任务的任务标识、导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,子任务对应一个或多个离线数据。显示第一任务信息、任务进度信息和第二任务信息。
统计监控模块还用于当第一存储设备的磁盘中的第一离线数据被访问时,记录第一离线数据的访问信息,根据访问信息,更新第一离线数据的热度值,当第一离线数据的热度值高于第二预设阈值时,将第一离线数据转存回第一存储设备的内存中。
图2是本公开实施例提供的一种数据导入方法的流程图。参见图2,该实施例包括以下步骤:
201、服务器获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签。
服务器可以提供数据导入的管理界面。参见图3,该管理界面右上方的功能栏中显示数据导入按钮,当服务器接收到用户对数据导入按钮的点击操作时,服务器显示如图4所示的任务导入界面,该任务导入界面显示导入任务的任务参数,该任务参数至少包括数据标签,任务参数还可以包括任务名称、数据标签、更新频率、数据在DCache的清理周期、数据的使用方法及用途、数据的类型、数据的时间范围、产品范围、键值等任务参数中的任意一个或多个。
用户可在任务导入界面中配置导入任务的任务参数,然后点击右下方的提交按钮来发起数据导入的任务。相应的,当服务器接收到用户对提交按钮的点击操作时,服务器获取任务导入界面中的导入任务的任务参数,任务参数包括数据标签。
其中,数据标签可以为一个或者多个,每个数据标签对应一条或多条离线数据。
在本公开实施例中,服务器通过获取用户在任务导入界面配置的导入任务的任务参数,后续根据任务参数中的数据标签将对应的离线数据导入到线上,从而做到有选择的将需要的离线数据导入到线上,可以提升线上内存中的数据的价值,进而促进线上业务增长。
202、服务器根据数据标签,获取数据标签对应的多个离线数据。
该步骤可以包括以下第一和第二两个步骤:
第一,服务器根据数据标签,确定离线数据的数据源。
在一种可能的实现方式中,服务器中存储了数据标签与数据源的对应关系,相应的,服务器根据数据标签,确定离线数据的数据源的步骤为:服务器根据数据标签和数据标签与数据源的对应关系,确定数据标签对应的数据源。
第二,服务器根据数据源获取数据标签对应的多个离线数据。
根据数据源的不同,该步骤的实现方式分为以下四种情况:
(A)当离线数据的数据源为Hive(数据仓库)时,服务器通过Spark SQL(数据处理工具),从线下的第二存储设备的Hive中流式读取数据标签对应的离线数据。
其中,Spark SQL是一种用于处理结构化数据的数据处理工具。Spark SQL支持HiveQL语法(一种语法)、Hive SerDe(Serializer Deserializer,序列化和返序列化)以及UDF(user-defined function,用户定义函数),从而支持对Hive的读取。图5是数据源为Hive时,数据的导入流程图。
在本公开实施例中,通过Spark SQL流式读取hive中的数据标签对应的离线数据,由于Spark SQL底层的计算引擎为Spark(一种计算引擎),而Spark的数据处理速度极快,从而实现快速从了Hive中读取离线数据。
(B)当离线数据的数据源为HDFS(分布式文件***)时,服务器从线下的第二存储设备中读取HDFS中数据标签对应的离线数据。
在一种可能的实现方式中,服务器通过Spark SQL读取HDFS中的数据标签对应的离线数据,当然服务器还可以通过其他hadoop(一种分布式处理架构)工具类读取HDFS中的数据标签对应的离线数据。服务器也可以按照字符读取方式读取HDFS中的数据标签对应的离线数据或者按照URL方式(一种HDFS的数据读取方式)来流式读取HDFS中的数据标签对应的离线数据。本公开对具体采用哪种方式来读取HDFS中数据标签对应的离线数据不做限制。
(C)当离线数据的数据源为离线文件时,服务器从线下的第二存储设备中获取数据标签对应的离线文件,将离线文件切割为多个子文件。
其中,离线文件中的数据可以包括经过离线计算的数据和线上服务日志产生的数据。
在一种可能的实现方式中,服务器将离线文件切割为多个子文件的步骤包括:服务器将离线文件发送给文件切割服务器,文件切割服务器获取离线文件的行数,当离线文件的行数超过预定行数时,将离线文件按照预定行数切割为多个子文件。其中,预定行数可以根据需要设定,本公开以10万行为例进行说明。
在一种可能的实现方式中,离线文件的数量可能为多个,文件切割服务器的数量也为多个,相应的,服务器将离线文件切割为多个子文件的步骤包括:服务器将多个离线文件分配给多个文件切割服务器,多个文件切割服务器同步进行文件切割;对于任一个文件切割服务器,该文件切割服务器获取该文件切割服务器被分配的离线文件的行数,当离线文件的行数超过预定行数时,将离线文件按照预定行数切割为多个子文件。
其中,服务器将多个离线文件分配给多个文件切割服务器的步骤可以包括:服务器分别从每个文件切割服务器中获取每个文件切割服务器的负载信息。根据每个文件切割服务器的负载信息,从每个文件切割服务器中确定出负载最小的一个文件切割服务器,然后将多个离线文件发送给该文件切割服务器。如此可以保证将离线文件发送给负载较小的文件切割服务器,进而确保该文件切割服务器能够快速进行离线文件的切割。
在另一种可能的实现方式中,服务器将多个离线文件分配给多个文件切割服务器的方式可以包括:服务器分别从每个文件切割服务器中获取每个文件切割服务器的负载信息。根据每个文件切割服务器的负载信息,从每个文件切割服务器中选择负载小于预设负载阈值的每个文件切割服务器。
假设第一数目为离线文件的数目,如果选择的文件切割服务器的数目大于第一数目,则从选择的文件切割服务器中获取负载最小的第一数目个文件切割服务器,使每个离线文件分别对应第一数目个文件切割服务器中的一个文件切割服务器。如果选择的文件切割服务器的数目等于第一数目,则直接使每个离线文件分别对应第一数目个服务器中的一个服务器。如果选择的文件切割服务器的数目小于第一数目,则根据选择的每个文件切割服务器的负载信息,分别确定每个离线文件对应的文件切割服务器,使负载大的文件切割服务器对应的离线文件的数目少,负载小的文件切割服务器对应的离线文件的数目多。如此将每个离线文件分开发送给多个文件切割服务器,多个文件切割服务器同步处理,可以加快离线文件的切割速度,节省离线文件切割的时间。
如图6所示,离线文件的数量为2,文件切割服务器的数量为2,服务器将2个离线文件平均分配给2个文件切割服务器。第一个文件切割服务器将离线文件1按照预定行数切割为3个子文件,第二个文件切割服务器将离线文件2按照行数切割为3个子文件。
在本公开实施例中,通过将离线的大文件切割成多个子文件,后续将多个子文件批量导入到线上,一方面大大提高了离线数据导入至线上的速度,另一方面由于大文件的处理容易出错,被数据导入被中断后重新启动困难,本公开通过将行数超过预定行数的离线的大文件切割成多个子文件后导入至线上,降低了数据导入的出错率,且数据导入出错后的恢复成本低。
(D)当离线数据的数据源为线上流式数据时,服务器通过kafka(分布式消息发布订阅***)获取数据标签对应的线上流式数据,利用spark(计算引擎)对线上流式数据进行计算,将经过计算后的线上流式数据作为离线数据。
其中,该线上流式数据可以为TAF产生。
由于kafka具有高吞吐量、低延迟的特性,每秒可以处理几十万条消息,它的延迟最低只有几毫秒,通过kafka获取数据标签对应的线上流式数据,可以极大地提升数据获取的速度。并且,由于spark是基于内存计算且引入DAG(Directed Acyclic Graph,有向无环图)执行引擎,spark的处理速度极快,通过spark对线上流式数据进行计算,极大地提高了对线上流式数据的计算速度,节省了计算时间,进而提升了将数据导入到线上的导入速度。经实验,通过本公开中的方法将离线数据导入到线上时,每天的数据量可达50亿条,且导入速度可以达到每秒20万。
203、服务器将多个离线数据,分批导入到线上的多个第一存储设备的内存中。
在一种可能的实现方式中,该步骤包括以下步骤(1)至(3):
(1)服务器将多个离线数据写入消息队列进行缓存,通过消费线程,从消息队列消费离线数据。
在一种可能的实现方式中,该消息队列可以为kafka消息队列,相应的,服务器将多个离线数据写入消息队列进行缓存的步骤可以包括:服务器通过spark-kafka-writer将多个离线数据写入kafka消息队列。在一种可能的实现方式中,服务器通过消费线程,从消息队列消费离线数据的步骤包括:服务器通过消息代理建立消费线程,通过消费线程从消息队列消费离线数据。其中,消费线程的数量可以为一个或多个。
当消息队列为kafka消息队列时,消息代理可以为kafka-proxy。需要说明的一点是,kafka-proxy是利用kafka的C++API(一种程序编程接口)开发的消息代理,可以从kafka消息队列读取数据,以及将发送至下游服务。
需要说明的另一点是,相对于其他消息队列,kafka消息队列的将数据持久化到本地磁盘,并且支持数据备份,从而可靠性更高。且kafka消息队列具有高并发特性,支持大量客户同时读写。在本公开实施例中,服务器通过将多个离线数据写入kafka消息队列,通过消费线程,从kafka消息队列消费离线数据,可以极大地提高将离线数据导入到线上的导入速度。
(2)服务器对消费的离线数据进行数据格式适配,以及,对消费的离线数据进行数据合法性校验。
在一种可能的实现方式中,任务参数还包括离线数据的用途,且服务器中存储了数据用途与数据格式的对应关系,相应的,服务器对消费的离线数据进行数据格式适配的步骤为:服务器根据消费的离线数据的用途和数据用途与数据格式的对应关系,将消费的离线数据转换为对应的数据格式。其中,服务器支持的数据格式包括列表格式、结构体格式、KKV(Key-Key-value,键-键-值)格式、Subkey(子键)格式等,表一中列出了各种数据格式的样式。其中,Mainkey为主键,field为字段。对于其他特殊格式,服务器提供so(sharedobject,共享库)动态解析。
表一
支持的数据格式 | 样式 |
列表格式 | Key|value1,value2,value3 |
结构体格式 | Key|filed|filed2|filed3 |
KKV格式 | Key|key1=value1,key2=value2,key3=value3 |
Subkey格式 | Mainkey|subkey|field1,field2,field3 |
在本公开实施例中,服务器通过对消费的数据进行数据格式适配,从而该数据导入方法适配丰富的数据格式,后续将经过格式适配的数据导入至线上存储,可以满足各种线上业务的需求,从而促进业务增长。其中,线上业务可以包括:天机决策***、应用推荐***、广告***等。
在一种可能的实现方式中,服务器中存储了离线数据中的每个字段与阈值的对应关系,相应的,服务器对消费的离线数据进行数据合法性校验的步骤包括:服务器获取消费的离线数据的每个字段以及每个字段对应的值,根据每个字段以及每个字段与阈值的对应关系,获取每个字段对应的阈值。对于消费的离线数据的任一个字段,将该字段的值和阈值做比较,当该字段的值不在阈值内,则确定该字段对应的消费的离线数据不合法。当消费的离线数据的每个字段的值都在每个字段对应的阈值内时,确定该消费的离线数据合法。
例如,当一条离线数据的其中一个字段为“人物年龄”,服务器中存储的该字段对应的阈值为【0,200】时,若该字段的值为190,在这个【0,200】范围内,服务器确定该字段是合法的,然后判断该离线数据中的其他字段是否合法,若该离线数据中的所有字段都合法,则确定该离线数据合法;若该字段的值为210,不在这个【0,200】范围内,服务器确定该字段不合法,进而确定该离线数据不合法。
(3)当消费的离线数据合法时,服务器将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
其中,服务器可以根据需要设定每批离线数据的数据量,例如,每批离线数据的数据量可以为50条。
服务器将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中的步骤包括:服务器从线上的多个第一存储设备中选择一个第一存储设备,将消费的离线数据分批导入到选择的第一存储设备的内存中。
其中,服务器从线上的多个第一存储设备中选择一个第一存储设备的步骤可以包括:服务器分别从每个第一存储设备中获取每个第一存储设备的负载信息。根据每个第一存储设备的负载信息,从每个第一存储设备中确定出负载最小的一个第一存储设备,然后将消费的离线数据导入到该第一存储设备的内存中。如此可以保证将消费的离线数据导入到负载较小的第一存储设备。
在一种可能的实现方式中,服务器将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中之后,该步骤还包括:服务器定期通过该第一存储设备给其他第一存储设备发送数据同步请求,当收到其他第一存储设备返回的确认消息时,将该第一存储设备中新存储的数据发送给其他第一存储设备。
在一种可能的实现方式中,多个第一存储设备分为多个存储组,每个存储组中包括一个作为主内存使用的第一存储设备和至少一个作为备份内存使用的第一存储设备,则服务器将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中的步骤包括:服务器将消费的离线数据分批导入到线上的多个内存组中一个内存组中的主内存对应的第一存储设备的内存中,主内存对应的第一存储设备给该同一存储组中的其他第一存储设备发送数据同步请求,当收到其他第一存储设备返回的确认消息时,将该第一存储设备中新存储的数据发送给其他第一存储设备。
在本公开实施例中,服务器通过将消费的离线数据分批导入到线上的多个存储组中一个存储组中的主内存对应的第一存储设备的内存中,主内存对应的第一存储设备再将新存储的数据同步到备用内存对应的第一存储设备。从而各存储组中的数据不重复,扩大了数据的存储量。且每个存储组中的主内存和备用内存保持数据同步,则当主内存对应的第一存储设备出现故障时,备用内存可以即时代替主内存工作,从而保证业务的正常进行。
在另一种可能的实现方式中,当离线数据为子文件时,服务器将多个离线数据,分批导入到线上的多个第一存储设备的内存中的步骤可以包括:服务器按行读取子文件中的数据,将读取的数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
其中,服务器将读取的数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中的方法和服务器将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中的方法同理,此处不再赘述。
204、对于每个第一存储设备,服务器从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。
在一种可能的实现方式中,当第一存储设备的内存中的离线数据被访问时,服务器记录离线数据的访问信息;当对第一存储设备的内存中的离线数据进行转存时,根据离线数据的访问信息,确定离线数据的热度值。
其中,访问信息可以包括离线数据被访问的时间。则服务器根据离线数据的访问信息,确定离线数据的热度值的步骤包括:服务器根据离线数据被访问的时间,统计单位时间内该离线数据被访问的次数,将单位时间内离线数据被访问的次数作为离线数据的热度值。
在本公开实施例中,服务器通过当对第一存储设备的内存中的离线数据进行转存时,根据离线数据的访问信息,确定离线数据的热度值,将热度值低于预设阈值的数据作为第一离线数据,然后将第一离线数据转存到第一存储设备的磁盘中,保证内存中存储访问次数较高的热数据,且由于内存的读写速度极快,从而方便线上业务的数据使用。将访问次数较低的大量冷数据存储到磁盘中,降低了存储成本,且极大的提高了线上数据的存储量。
需要说明的一点是,也可以用固态硬盘代替磁盘,或者直接用固态硬盘代替第一存储设备中的内存和磁盘。由于固态硬盘支持高速读写,直接用固态硬盘来存储数据,相对于内存和磁盘来说,既保证了数据的导入数据,又能提高数据的容纳量,性价比高。
在一种可能的实现方式中,服务器将第一离线数据存储到第一存储设备的磁盘中的步骤包括:服务器将第一离线数据写入内存队列,从内存队列中获取第一离线数据,将第一离线数据存储到磁盘中。
在一种可能的实现方式中,当第一存储设备的磁盘中的第一离线数据被访问时,服务器记录第一离线数据的访问信息,根据访问信息,更新第一离线数据的热度值。当第一离线数据的热度值高于第二预设阈值时,将第一离线数据转存回第一存储设备的内存中。
其中,第一离线数据的访问信息可以包括第一离线数据被访问的时间。则服务器根据访问信息,更新第一离线数据的热度值的步骤包括:服务器根据第一离线数据被访问的时间,统计单位时间内该第一离线数据被访问的次数,将单位时间内第一离线数据被访问的次数作为第一离线数据的热度值。
在本公开实施例中,服务器通过当第一存储设备的磁盘中的第一离线数据被访问时,服务器记录第一离线数据的访问信息,根据访问信息,更新第一离线数据的热度值。当第一离线数据的热度值高于第二预设阈值时,将第一离线数据转存回第一存储设备的内存中,进一步保证了将热度值高的数据保存在第一存储设备的内存中,从而提高线上业务的数据读取速度。
在一种可能的实现方式中,服务器还记录第一离线数据存储到磁盘中所需时长,当第一离线数据存储到磁盘中所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少消费线程的数量。
当内存队列中剩余的第一离线数据的数量小于第二预设数量且第一离线数据存储到磁盘中所需时长未超过预设时长时,则增加消费线程的数量。
其中,第一预设数量以及第二预设数量可以根据需要设定,例如,第一预设数量可以为70%,第二预设数量可以为30%。预设时长也可以根据需要设定。
当第一离线数据存储到磁盘中所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,服务器则减少消费线程的数量的步骤可以包括:当第一离线数据存储到磁盘中所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,服务器给消息代理发送第一消息,该第一消息用于通知消息代理减少消费线程的数量。当消息代理接收到该第一消息时,减少消费线程的数量。
当内存队列中剩余的第一离线数据的数量小于第二预设数量且第一离线数据存储到磁盘中所需时长未超过预设时长时,服务器则增加消费线程的数量的步骤可以包括:当内存队列中剩余的第一离线数据的数量小于第二预设数量且第一离线数据存储到磁盘中所需时长未超过预设时长时,服务器给消息代理发送第二消息,该第二消息用于通知消息代理增加消费线程的数量。当消息代理接收到该第二消息时,增加消费线程的数量。
其中,第一消息可以为一个负反馈,第二消息可以为一个正反馈。
在本公开实施例中,服务器通过当第一离线数据存储到磁盘中所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,减少消费线程的数量。当内存队列中剩余的第一离线数据的数量小于第二预设数量且第一离线数据存储到磁盘中所需时长未超过预设时长时,增加消费线程的数量来控制离线数据的导入速度,从而降低离线数据的导入出错率,保证离线数据可以快速准确地导入到线上。参考图7,图7为导入速度控制的流程图。
需要说明的一点是,服务器提供的管理界面右上方的功能栏中还包括查询按钮,继续参考图3和图4,当数据器将多个离线数
据导入到线上后,用户可以点击查询按钮来查看已上线的任务。相应的,当服务器接收到用户触发查询按钮的操作时,服务器显示一个下拉框,并且在下拉框中显示上线任务查询按钮和标签查询按钮,当服务器接收到用户触发上线任务查询按钮的操作时,服务器在管理界面的功能栏下方显示标题栏,该标题栏中包括任务标识、任务名称、跟标签、数据仓库名称、更新频率、任务状态、管理人等标题中的任意一个或多个,并在各标题下方分别对应显示已上线的至少一个任务的各项任务参数。
其中,任务名称下方的至少一个已上线任务的名称为该任务的任务导入界面的跳转接口,当服务器接收到用户对该跳转接口的操作时,服务器显示该任务的导入界面,从而用户可以查看任务导入界面中的任务的各项任务参数。
在本公开实施例中,通过在任务导入界面显示任务导入的各项参数,从而用户可以方便地指定数据导入的格式,规模、日期、保留时长等参数,后续服务器获取用户在任务导入界面配置的导入任务的任务参数,自动完成导入任务,极大地提高了数据导入到线上的效率。
需要说明的一点是,执行完步骤204之后,可以结束;也可以执行步骤205,然后执行206。当然,执行完步骤204之后,也可以不执行步骤205,直接执行步骤206。
205、服务器获取导入任务的第一任务信息、任务进度信息和第二任务信息,显示第一任务信息、任务进度信息和第二任务信息。
在一种可能的实现方式中,该步骤包括:当到达统计周期时,服务器获取导入任务在导入任务开始到当前时刻的第一任务信息、导入任务的任务进度信息和导入任务在每个采样时间点的第二任务信息,任务信息包括导入任务的任务标识、导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,子任务对应一个或多个离线数据。显示第一任务信息、任务进度信息和第二任务信息。
其中,第一任务信息可以包括导入任务的任务标识、导入任务的任务名称、导入任务包括的子任务的数量、导入任务在导入任务开始到当前时刻的累计成功被导入离线数据的子任务的第一数量,以及当前时刻导入的子任务的成功率。
任务进度信息为在每个时间采用点累计成功被导入的离线数据的子任务的第一数量与导入任务包括的子任务的数量的比值。在一种可能的实现方式中,服务器显示任务进度信息的方式为,服务器根据任务进度信息,生成任务漏斗,显示任务漏斗。或者,服务器根据任务进度信息,生成任务进度条,显示任务进度条。在本公开中,以任务漏斗为例进行说明。
第二任务信息可以包括导入任务在每个采样时间点的导入成功的子任务的数量。
服务器显示第二任务信息的步骤包括:服务器根据第二任务信息生成任务导入的折线图,其中折线图的横坐标为时间,纵坐标为累计成功被导入离线数据的子任务的第一数量。
参考图8,图8展示了第一任务信息、任务进度信息和第二任务信息。
在本公开实施例中,服务器通过获取第一任务信息、导入任务的任务进度信息和导入任务在每个采样时间点的第二任务信息,且根据任务进度信息生成任务进度条或者任务进度条,根据导入任务在每个采样时间点的第二任务信息生成折线图,从而直观地展示了数据导入的速度和质量,方便用户查看数据导入的结果。
在一种可能的实现方式中,当第一存储设备接收线上业务的数据请求时,该数据请求用于获取第一存储设备中的离线数据,服务器记录请求的离线数据的数据类型,以及接收数据请求的时间;当第一存储设备中存储有被请求的数据类型的离线数据时,将该离线数据返回给线上业务,且记录本次数据请求为“成功”。服务器根据记录中请求的离线数据的数据类型,以及接收数据请求的时间,统计单位时间内每种数据类型被请求的次数,以及请求成功的次数,将请求成功的次数与请求的次数的商作为每种数据类型的数据命中率,显示每种数据的数据命中率。参考图9,图9展示了每种数据类型的数据命中率。
在本公开实施例中,服务器通过统计每种数据类型的数据命中率,后续用户可以根据每种数据类型的数据命中率发起数据导入任务,从而提高线上数据的命中率,促进线上业务增长。
206、任务参数还包括多个离线数据的清理周期,当到达清理周期时,服务器将第一存储设备的内存中的数据标签对应的第一离线数据删除。
在本公开实施例中,当到达离线数据的清理周期时,服务器通过将第一存储设备的内存中的数据标签对应的第一离线数据删除,节省了内存,从而线上内存可以存储更多有价值的数据,进而促进线上业务增长。
在本公开实施例中,获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签;根据数据标签,获取数据标签对应的多个离线数据;将多个离线数据,分批导入到线上的多个第一存储设备的内存中;对于每个第一存储设备,从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。通过将数据标签对应的离线数据分批导入到线上的多个第一存储设备的内存中,将内存中热度值低于预设阈值的第一离线数据存储到第一存储设备的磁盘中,极大的增加了线上的数据存储量,从而支持海量级的数据导入。
本公开实施例提供了一种数据导入装置,该装置用于执行上述数据导入方法中服务器执行的操作。参见图10,该装置包括:
第一获取模块1001,用于获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签;
第二获取模块1002,用于根据数据标签,获取数据标签对应的多个离线数据;
导入模块1003,用于将多个离线数据,分批导入到线上的多个第一存储设备的内存中;
存储模块1004,用于对于每个第一存储设备,从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。
在一种可能的实现方式中,第二获取模块1002,还用于根据数据标签,确定离线数据的数据源;当离线数据的数据源为数据仓库Hive时,通过数据处理工具Spark SQL,从线下的第二存储设备的Hive中流式读取数据标签对应的离线数据;
第二获取模块1002,还用于当离线数据的数据源为分布式文件***HDFS时,从线下的第二存储设备中读取HDFS中数据标签对应的离线数据;
第二获取模块1002,还用于当离线数据的数据源为离线文件时,从线下的第二存储设备中获取数据标签对应的离线文件,将离线文件切割为多个子文件;
第二获取模块1002,还用于当离线数据的数据源为线上流式数据时,通过分布式消息发布订阅***kafka获取数据标签对应的线上流式数据,利用计算引擎spark对线上流式数据进行计算,将经过计算后的线上流式数据作为离线数据。
在另一种可能的实现方式中,导入模块1003,还用于将多个离线数据写入消息队列进行缓存,通过消费线程,从消息队列消费离线数据;对消费的离线数据进行数据格式适配,以及,对消费的离线数据进行数据合法性校验;当消费的离线数据合法时,将消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
在另一种可能的实现方式中,存储模块1004,还用于将第一离线数据写入内存队列;从内存队列中获取第一离线数据,将第一离线数据存储到磁盘中;记录第一离线数据存储到磁盘中所需时长;
当第一离线数据存储到磁盘中所需时长超过预设时长,或者内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少消费线程的数量;
当内存队列中剩余的第一离线数据的数量小于第二预设数量且第一离线数据存储到磁盘中所需时长未超过预设时长时,则增加消费线程的数量。
在另一种可能的实现方式中,装置还包括:第三获取模块,用于当到达统计周期时,获取导入任务在导入任务开始到当前时刻的第一任务信息、导入任务的任务进度信息和导入任务在每个采样时间点的第二任务信息,任务信息包括导入任务的任务标识、导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,子任务对应一个或多个离线数据;
显示模块,用于显示第一任务信息、任务进度信息和第二任务信息。
在另一种可能的实现方式中,存储模块1004,还用于当第一存储设备的磁盘中的第一离线数据被访问时,记录第一离线数据的访问信息,根据访问信息,更新第一离线数据的热度值;当第一离线数据的热度值高于第二预设阈值时,将第一离线数据转存回第一存储设备的内存中。
在另一种可能的实现方式中,任务参数还包括多个离线数据的清理周期;装置还包括:删除模块,用于当到达清理周期时,将第一存储设备的内存中的数据标签对应的第一离线数据删除。
在本公开实施例中,获取用户在任务导入界面配置的导入任务的任务参数,任务参数包括数据标签;根据数据标签,获取数据标签对应的多个离线数据;将多个离线数据,分批导入到线上的多个第一存储设备的内存中;对于每个第一存储设备,从第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将第一离线数据转存到第一存储设备的磁盘中。通过将数据标签对应的离线数据分批导入到线上的多个第一存储设备的内存中,将内存中热度值低于预设阈值的第一离线数据存储到第一存储设备的磁盘中,极大的增加了线上的数据存储量,从而支持海量级的数据导入。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据导入装置在进行数据导入时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据导入装置与数据导入方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11是本公开实施例提供的一种服务器的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)1101和一个或一个以上的存储器1102,其中,所述存储器1102中存储有至少一条指令,所述至少一条指令由所述处理器1101加载并执行以实现上述各个方法实施例提供数据导入方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由服务器中的处理器执行以完成上述实施例中数据导入方法。例如,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (14)
1.一种数据导入方法,其特征在于,所述方法包括:
获取用户在任务导入界面配置的导入任务的任务参数,所述任务参数包括数据标签;
根据所述数据标签,确定离线数据的数据源;
当所述离线数据的数据源为数据仓库Hive时,通过数据处理工具Spark SQL,从线下的第二存储设备的Hive中流式读取所述数据标签对应的离线数据;
当所述离线数据的数据源为分布式文件***HDFS时,从线下的第二存储设备中读取HDFS中所述数据标签对应的离线数据;
当所述离线数据的数据源为离线文件时,从线下的第二存储设备中获取所述数据标签对应的离线文件,将所述离线文件切割为多个子文件,将所述多个子文件作为所述离线数据;
当所述离线数据的数据源为线上流式数据时,通过分布式消息发布订阅***kafka获取所述数据标签对应的线上流式数据,利用计算引擎spark对所述线上流式数据进行计算,将经过计算后的所述线上流式数据作为所述离线数据;
将得到的多个离线数据,分批导入到线上的多个第一存储设备的内存中;
对于每个第一存储设备,从所述第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将所述第一离线数据转存到所述第一存储设备的磁盘中。
2.根据权利要求1所述的方法,其特征在于,所述将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中,包括:
将所述多个离线数据写入消息队列进行缓存,通过消费线程,从所述消息队列消费离线数据;
对消费的离线数据进行数据格式适配,以及,对所述消费的离线数据进行数据合法性校验;
当所述消费的离线数据合法时,将所述消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一离线数据存储到所述第一存储设备的磁盘中,包括:
将所述第一离线数据写入内存队列;
从所述内存队列中获取第一离线数据,将所述第一离线数据存储到所述磁盘中;
记录所述第一离线数据存储到所述磁盘中所需时长;
当所述第一离线数据存储到所述磁盘中所需时长超过预设时长,或者所述内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少所述消费线程的数量;
当所述内存队列中剩余的第一离线数据的数量小于第二预设数量且所述第一离线数据存储到所述磁盘中所需时长未超过预设时长时,则增加所述消费线程的数量。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当到达统计周期时,获取所述导入任务在所述导入任务开始到当前时刻的第一任务信息、所述导入任务的任务进度信息和所述导入任务在每个采样时间点的第二任务信息,任务信息包括所述导入任务的任务标识、所述导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,所述子任务对应一个或多个离线数据;
显示所述第一任务信息、所述任务进度信息和所述第二任务信息。
5.根据权利要求1所述的方法,其特征在于,所述将所述多个离线数据,分批导入到线上的多个第一存储设备的内存中之后,所述方法还包括:
当所述第一存储设备的磁盘中的第一离线数据被访问时,记录所述第一离线数据的访问信息,根据所述访问信息,更新所述第一离线数据的热度值;
当所述第一离线数据的热度值高于第二预设阈值时,将所述第一离线数据转存回所述第一存储设备的内存中。
6.根据权利要求1所述的方法,其特征在于,所述任务参数还包括所述多个离线数据的清理周期;所述方法还包括:
当到达所述清理周期时,将所述第一存储设备的内存中的所述数据标签对应的第一离线数据删除。
7.一种数据导入装置,其特征在于,所述装置包括:
第一获取模块,用于获取用户在任务导入界面配置的导入任务的任务参数,所述任务参数包括数据标签;
第二获取模块,用于根据所述数据标签,确定离线数据的数据源;当所述离线数据的数据源为数据仓库Hive时,通过数据处理工具Spark SQL,从线下的第二存储设备的Hive中流式读取所述数据标签对应的离线数据;当所述离线数据的数据源为分布式文件***HDFS时,从线下的第二存储设备中读取HDFS中所述数据标签对应的离线数据;当所述离线数据的数据源为离线文件时,从线下的第二存储设备中获取所述数据标签对应的离线文件,将所述离线文件切割为多个子文件,将所述多个子文件作为所述离线数据;当所述离线数据的数据源为线上流式数据时,通过分布式消息发布订阅***kafka获取所述数据标签对应的线上流式数据,利用计算引擎spark对所述线上流式数据进行计算,将经过计算后的所述线上流式数据作为所述离线数据;
导入模块,用于将得到的多个离线数据,分批导入到线上的多个第一存储设备的内存中;
存储模块,用于对于每个第一存储设备,从所述第一存储设备的内存中读取热度值低于第一预设阈值的第一离线数据,将所述第一离线数据转存到所述第一存储设备的磁盘中。
8.根据权利要求7所述的装置,其特征在于,所述导入模块,用于将所述多个离线数据写入消息队列进行缓存,通过消费线程,从所述消息队列消费离线数据;对消费的离线数据进行数据格式适配,以及,对所述消费的离线数据进行数据合法性校验;当所述消费的离线数据合法时,将所述消费的离线数据分批导入到线上的多个第一存储设备中的一个第一存储设备的内存中。
9.根据权利要求8所述的装置,其特征在于,所述存储模块,用于将所述第一离线数据写入内存队列;从所述内存队列中获取第一离线数据,将所述第一离线数据存储到所述磁盘中;记录所述第一离线数据存储到所述磁盘中所需时长;
当所述第一离线数据存储到所述磁盘中所需时长超过预设时长,或者所述内存队列中剩余的第一离线数据的数量大于第一预设数量时,则减少所述消费线程的数量;
当所述内存队列中剩余的第一离线数据的数量小于第二预设数量且所述第一离线数据存储到所述磁盘中所需时长未超过预设时长时,则增加所述消费线程的数量。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:第三获取模块,用于当到达统计周期时,获取所述导入任务在所述导入任务开始到当前时刻的第一任务信息、所述导入任务的任务进度信息和所述导入任务在每个采样时间点的第二任务信息,任务信息包括所述导入任务的任务标识、所述导入任务包括的子任务的数量、累计成功被导入离线数据的子任务的第一数量,其中,所述子任务对应一个或多个离线数据;
显示模块,用于显示所述第一任务信息、所述任务进度信息和所述第二任务信息。
11.根据权利要求7所述的装置,其特征在于,所述存储模块,还用于当所述第一存储设备的磁盘中的第一离线数据被访问时,记录所述第一离线数据的访问信息,根据所述访问信息,更新所述第一离线数据的热度值;当所述第一离线数据的热度值高于第二预设阈值时,将所述第一离线数据转存回所述第一存储设备的内存中。
12.根据权利要求7所述的装置,其特征在于,所述任务参数还包括所述多个离线数据的清理周期;所述装置还包括:删除模块,用于当到达所述清理周期时,将所述第一存储设备的内存中的所述数据标签对应的第一离线数据删除。
13.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求6任一项所述的数据导入方法所执行的操作。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求6任一项所述的数据导入方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911298400.4A CN110990476B (zh) | 2019-12-17 | 2019-12-17 | 数据导入方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911298400.4A CN110990476B (zh) | 2019-12-17 | 2019-12-17 | 数据导入方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990476A CN110990476A (zh) | 2020-04-10 |
CN110990476B true CN110990476B (zh) | 2023-04-07 |
Family
ID=70094615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911298400.4A Active CN110990476B (zh) | 2019-12-17 | 2019-12-17 | 数据导入方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990476B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767331A (zh) * | 2020-06-17 | 2020-10-13 | 北京思特奇信息技术股份有限公司 | 千万量级数据在关系型数据库中的多任务可视化激活方法 |
CN116737512B (zh) * | 2023-08-14 | 2023-11-10 | 杭州玳数科技有限公司 | 一种基于Spark的离线任务执行进度计算与获取方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845794A (zh) * | 2018-05-16 | 2018-11-20 | 山东浪潮商用***有限公司 | 一种流式运算框架、方法、可读介质和存储控制器 |
CN108874982A (zh) * | 2018-06-11 | 2018-11-23 | 华南理工大学 | 一种基于Spark大数据框架离线实时处理数据的方法 |
WO2019056887A1 (zh) * | 2017-09-20 | 2019-03-28 | 国网上海市电力公司 | 对大规模可再生能源数据进行概率建模的方法 |
CN109753531A (zh) * | 2018-12-26 | 2019-05-14 | 深圳市麦谷科技有限公司 | 一种大数据统计方法、***、计算机设备及存储介质 |
CN109815028A (zh) * | 2018-12-27 | 2019-05-28 | 北京摩拜科技有限公司 | 数据同步的***、方法、装置和计算机存储介质 |
CN110362630A (zh) * | 2019-07-19 | 2019-10-22 | 深圳前海微众银行股份有限公司 | 数据管理方法、装置、设备与计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201615747D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for data management in a large scale data repository |
-
2019
- 2019-12-17 CN CN201911298400.4A patent/CN110990476B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019056887A1 (zh) * | 2017-09-20 | 2019-03-28 | 国网上海市电力公司 | 对大规模可再生能源数据进行概率建模的方法 |
CN108845794A (zh) * | 2018-05-16 | 2018-11-20 | 山东浪潮商用***有限公司 | 一种流式运算框架、方法、可读介质和存储控制器 |
CN108874982A (zh) * | 2018-06-11 | 2018-11-23 | 华南理工大学 | 一种基于Spark大数据框架离线实时处理数据的方法 |
CN109753531A (zh) * | 2018-12-26 | 2019-05-14 | 深圳市麦谷科技有限公司 | 一种大数据统计方法、***、计算机设备及存储介质 |
CN109815028A (zh) * | 2018-12-27 | 2019-05-28 | 北京摩拜科技有限公司 | 数据同步的***、方法、装置和计算机存储介质 |
CN110362630A (zh) * | 2019-07-19 | 2019-10-22 | 深圳前海微众银行股份有限公司 | 数据管理方法、装置、设备与计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
于金良 ; 朱志祥 ; 梁小江 ; .一种基于Sqoop的数据交换***.物联网技术.2016,(第03期),42-44. * |
葛微.大数据索引和查询优化技术与***研究.《中国优秀硕士学位论文全文数据库 信息科技辑》.2019,(第06期),I135-203. * |
Also Published As
Publication number | Publication date |
---|---|
CN110990476A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422853B2 (en) | Dynamic tree determination for data processing | |
CN109189835B (zh) | 实时生成数据宽表的方法和装置 | |
US20200349160A1 (en) | Data query method, apparatus and device | |
CN109063196B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US9996593B1 (en) | Parallel processing framework | |
CN110990476B (zh) | 数据导入方法、装置、服务器及存储介质 | |
CN112256954A (zh) | 一种消息推送的处理方法及相关*** | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
US20230401537A1 (en) | Forming event-based recommendations | |
US11836132B2 (en) | Managing persistent database result sets | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
CN111444158A (zh) | 长短期用户画像生成方法、装置、设备及可读存储介质 | |
CN113127057B (zh) | 多任务并行执行的方法和装置 | |
CN116108057A (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
CN110019131B (zh) | 一种复盘业务的方法和装置 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN116383207A (zh) | 一种数据标签管理方法、装置、电子设备和存储介质 | |
CN112395337A (zh) | 一种数据导出方法和装置 | |
CN115905151A (zh) | 基于备份日志的流转信息查询方法、***和装置 | |
CN108228644A (zh) | 用于报表导出的方法及装置 | |
Koschel et al. | Evaluating time series database management systems for insurance company | |
Li et al. | Research and Application of High-Performance Data Storage and Transmission Technology in Microservice Environment | |
CN116701451A (zh) | 查询方法、装置和*** | |
CN116320010A (zh) | 消息处理方法、装置、设备及存储介质 | |
Xue | Improving Computing Efficiency and Reducing Carbon Footprint for Turing Cluster |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022481 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |