考勤数据的处理方法及装置与流程

文档序号:13876498阅读:283来源:国知局
考勤数据的处理方法及装置与流程

本发明涉及数据库技术领域,尤其涉及一种考勤数据的处理方法及装置。



背景技术:

目前,企业中针对员工考勤数据的大数据产品通常使用的是hive作为数据仓库,然而,采用hive作为数据仓库会出现如下的一些问题或存在如下的缺陷:1、如果考勤数据根据时间维度来自动创建hive表的动态分区(每个动态分区用来保存具体某一天的考勤数据)时,则生成的hive表的底层对应的文件数量较多,甚至达到10万多个,例如原始考勤数据为610g,产生的文件数量=分区数*作业数,且每个文件很小,文件数量容易超过系统的限制而导致系统异常;2、如果通过hive的算法将相同日期的考勤数据置于集群的一个reduce节点进行处理时,容易导致每个动态分区中的考勤数据分布不均匀,即有的reduce节点处理的考勤数据较大(例如,20g),有的reduce节点处理的考勤数据较小(例如,5k),使得数据查询性能差。



技术实现要素:

本发明所要解决的技术问题是提供一种考勤数据的处理方法及装置。

本发明解决上述技术问题的技术方案如下:一种考勤数据的处理方法,所述考勤数据的处理方法包括:

s1,考勤数据库系统建立用于存放以一天为时间维度的考勤数据的、预设数量的考勤数据文件,每一考勤数据文件对应一reduce节点,且不同的考勤数据文件对应不同的reduce节点;

s2,将每天的考勤数据随机均匀分配给预设数量的reduce节点,并由预设数量的各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

优选地,所述考勤数据处理方法还包括:

s3,在接收到包括时间维度信息和查询对象信息的考勤数据查询请求后,将所述考勤数据查询请求分发给各reduce节点,以由各reduce节点从考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

优选地,所述步骤s2包括:

将每天的考勤数据随机均匀分割成预设数量的考勤数据子集;

获取一所述考勤数据子集的大小与一所述考勤数据文件的大小的总和,分析所述总和是否小于等于预设阈值;

若所述总和小于等于所述预设阈值,则将各所述考勤数据子集随机分配给预设数量的reduce节点,并由各reduce节点将收到的所述考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

优选地,所述步骤s2还包括:

若所述总和大于所述预设阈值,则向预定的终端发送提醒信息,以提醒增加reduce节点的数量并重新分配考勤数据至reduce节点;或者自动增加reduce节点的数量,以重新分配考勤数据至reduce节点。

本发明解决上述技术问题的技术方案还如下:一种考勤数据的处理装置,所述考勤数据的处理装置包括:

建立模块,用于考勤数据库系统建立用于存放以一天为时间维度的考勤数据的、预设数量的考勤数据文件,每一考勤数据文件对应一reduce节点,且不同的考勤数据文件对应不同的reduce节点;

分配模块,用于将每天的考勤数据随机均匀分配给预设数量的reduce节点,并由预设数量的各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

优选地,所述考勤数据的处理装置还包括:

查询模块,用于在接收到包括时间维度信息和查询对象信息的考勤数据查询请求后,将所述考勤数据查询请求分发给各reduce节点,以由各reduce节点从考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

优选地,所述分配模块包括:

分割单元,用于将每天的考勤数据随机均匀分割成预设数量的考勤数据子集;

获取单元,用于获取一所述考勤数据子集的大小与一所述考勤数据文件的大小的总和,分析所述总和是否小于等于预设阈值;

第一分配单元,用于若所述总和小于等于所述预设阈值,则将各所述考勤数据子集随机分配给预设数量的reduce节点,并由各reduce节点将收到的所述考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

优选地,所述分配模块还包括:

第二分配单元,用于若所述总和大于所述预设阈值,则向预定的终端发送提醒信息,以提醒增加reduce节点的数量并重新分配考勤数据至reduce节点;或者自动增加reduce节点的数量,以重新分配考勤数据至reduce节点。

本发明的有益效果是:本发明考勤数据库系统创建考勤数据文件来存放考勤数据,并且使得每一考勤数据文件对应一reduce节点,然后考勤数据库系统将每天的考勤数据随机均匀分配给reduce节点,最终由reduce节点将自身分配到的考勤数据插入所对应的考勤数据文件中对应的时间维度下,本发明考勤数据库系统不使用hive表的动态分区存储考勤数据,因此不会生成hive表的底层对应的文件,从而不会因为文件小而多导致系统异常,保证系统的正常运行;将每天的考勤数据随机均匀分配给预设数量的reduce节点,每一reduce节点仅处理其所对应的考勤数据文件中所插入的考勤数据,且每一reduce节点处理的数据量大小一致,使得考勤数据分布均匀,提高考勤数据的查询性能。

附图说明

图1为本发明考勤数据的处理方法第一实施例的流程示意图;

图2为本发明考勤数据的处理方法第二实施例的流程示意图;

图3为本发明考勤数据的处理装置第一实施例的结构示意图;

图4为本发明考勤数据的处理装置第二实施例的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,图1为本发明考勤数据的处理方法一实施例的流程示意图,该考勤数据的处理方法包括以下步骤:

步骤s1,考勤数据库系统建立用于存放以一天为时间维度的考勤数据的、预设数量的考勤数据文件,每一考勤数据文件对应一reduce节点,且不同的考勤数据文件对应不同的reduce节点;

本实施例中,考勤数据库系统可以运行于一服务器中,考勤数据库系统建立预设数量的考勤数据文件,例如建立100个考勤数据文件,考勤数据文件用于存放以一天为时间维度的考勤数据,即在每个考勤数据文件中,某一天的考勤数据集合在该天时间维度下,例如存放7月1日、7月2日及7月3日的考勤数据,其中,7月1日的考勤数据集合在该天时间维度下,7月2日的考勤数据集合在该天时间维度下,7月3日的考勤数据集合在该天时间维度下,以此类推。

本实施例中,将每一个所建立的考勤数据文件与reduce节点进行对应,具体地,一个考勤数据文件对应一个reduce节点,且不同的考勤数据文件对应不同的reduce节点,以便reduce节点后续对考勤数据文件中的考勤数据进行处理。

步骤s2,将每天的考勤数据随机均匀分配给预设数量的reduce节点,并由预设数量的各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例中,优选地,reduce节点的数量与考勤数据文件的数量一致,将每天的考勤数据随机均匀分配给与考勤数据文件的数量一致的reduce节点(reduce节点的数量同样为预设数量),具体地,可以将每天的考勤数据按照数据量大小均匀地分配给每一reduce节点,以便每一reduce节点能够分配到相同大小的考勤数据。然后,由每一reduce节点将自身所分配到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

例如,若2016年7月1日的考勤数据大小为200m,考勤数据文件的数量为100个,则考勤数据库系统将该200m的考勤数据随机均匀分配至100个reduce节点,并由各个reduce节点将收到的考勤数据插入对应的考勤数据文件的对应的时间维度“2016年7月1日”下,即每个考勤数据文件会插入2m的考勤数据。

与现有技术相比,本实施例考勤数据库系统创建考勤数据文件来存放考勤数据,并且使得每一考勤数据文件对应一reduce节点,然后考勤数据库系统将每天的考勤数据随机均匀分配给reduce节点,最终由reduce节点将自身分配到的考勤数据插入所对应的考勤数据文件中对应的时间维度下,本实施例考勤数据库系统不使用hive表的动态分区存储考勤数据,因此不会生成hive表的底层对应的文件,从而不会因为文件小而多导致系统异常,保证系统的正常运行;将每天的考勤数据随机均匀分配给预设数量的reduce节点,每一reduce节点仅处理其所对应的考勤数据文件中所插入的考勤数据,且每一reduce节点处理的数据量大小一致,使得考勤数据分布均匀,提高考勤数据的查询性能。

在一优选的实施例中,如图2所示,在上述图1的实施例的基础上,所述考勤数据处理方法还包括:

s3,在接收到包括时间维度信息和查询对象信息的考勤数据查询请求后,将所述考勤数据查询请求分发给各reduce节点,以由各reduce节点从考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

本实施例中,如果用户需要对某一查询对象的考勤信息进行查询,则向考勤数据库系统发送一考勤数据查询请求,例如通过终端进行操作,向考勤数据库系统所在的服务器发送该考勤数据查询请求,其中,该考勤数据查询请求中包含时间维度信息和查询对象信息,即包含用户需要查询的该查询对象具体哪天的考勤的时间信息及查询对象的姓名或者编号信息等。

本实施例中,考勤数据库系统将该考勤数据查询请求向各具有考勤数据文件对应的reduce节点进行分发,各具有考勤数据文件对应的reduce节点在接收到分发到自身的考勤数据查询请求后,对考勤数据查询请求进行解析得到时间维度信息和查询对象信息,并从自身对应的考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

本实施例中,由于每一reduce节点仅查询其对应的考勤数据文件中的考勤数据,各考勤数据文件中的考勤数据的大小一致,分布均匀,因此,查询较便捷,提高考勤数据的查询性能。

在一优选的实施例中,在上述图1的实施例的基础上,所述步骤s2包括:

将每天的考勤数据随机均匀分割成预设数量的考勤数据子集;

获取一所述考勤数据子集的大小与一所述考勤数据文件的大小的总和,分析所述总和是否小于等于预设阈值;

若所述总和小于等于所述预设阈值,则将各所述考勤数据子集随机分配给预设数量的reduce节点,并由各reduce节点将收到的所述考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例中,在将考勤数据分配给reduce节点时,可以将每天的考勤数据随机均匀分割成预设数量的考勤数据子集,所分割成的考勤数据子集数量与reduce节点的数量一致,然后计算一考勤数据子集的大小与一考勤数据文件的大小的总和,并分析总和是否小于等于预设阈值,例如是否小于等于20g,若小于等于预设阈值,则将各考勤数据子集随机分配给预设数量的reduce节点,例如将某一天200m的考勤数据均匀分割成100份,将100份考勤数据随机分配给100个reduce节点。每一reduce节点在接收到考勤数据子集的考勤数据后,将该考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例在分割考勤数据后,将考勤数据子集与考勤数据文件两者的大小之和控制在一定范围内,使得每一reduce节点所对应的考勤数据文件不会过大,提高系统查询性能。

在一优选的实施例中,在上述实施例的基础上,所述步骤s2进一步包括:若所述总和大于所述预设阈值,则向预定的终端发送提醒信息,以提醒增加reduce节点的数量并重新分配考勤数据至reduce节点;或者自动增加reduce节点的数量,以重新分配考勤数据至reduce节点。

本实施例中,在分割考勤数据后,如果考勤数据子集与考勤数据文件两者的大小之和大于预设阈值,例如大于20g,则考勤数据库系统向预定的终端发送提醒信息,以便增加reduce节点的数量,使得过多的考勤数据分配至这些增加的reduce节点;或者自动增加reduce节点的数量,使得过多的考勤数据分配至这些自动增加的reduce节点。

进一步地,在增加reduce节点的数量后,考勤数据库系统可以重新建立与reduce节点的总数量相等的考勤数据文件,并使得每一考勤数据文件对应一reduce节点,然后重新将每天的考勤数据随机均匀分配给reduce节点,并由各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例在分割考勤数据后,同样将考勤数据子集与考勤数据文件两者的大小之和控制在一定范围内,使得每一reduce节点所对应的考勤数据文件不会过大,提高系统查询性能。

如图3所示,图3为本发明考勤数据的处理装置一实施例的结构示意图,该考勤数据的处理装置包括:

建立模块101,用于考勤数据库系统建立用于存放以一天为时间维度的考勤数据的、预设数量的考勤数据文件,每一考勤数据文件对应一reduce节点,且不同的考勤数据文件对应不同的reduce节点;

本实施例中,考勤数据库系统可以运行于一考勤数据的处理装置中,该考勤数据的处理装置集成于一服务器中,考勤数据库系统建立预设数量的考勤数据文件,例如建立100个考勤数据文件,考勤数据文件用于存放以一天为时间维度的考勤数据,即在每个考勤数据文件中,某一天的考勤数据集合在该天时间维度下,例如存放7月1日、7月2日及7月3日的考勤数据,其中,7月1日的考勤数据集合在该天时间维度下,7月2日的考勤数据集合在该天时间维度下,7月3日的考勤数据集合在该天时间维度下,以此类推。

本实施例中,将每一个所建立的考勤数据文件与reduce节点进行对应,具体地,一个考勤数据文件对应一个reduce节点,且不同的考勤数据文件对应不同的reduce节点,以便reduce节点后续对考勤数据文件中的考勤数据进行处理。

分配模块102,用于将每天的考勤数据随机均匀分配给预设数量的reduce节点,并由预设数量的各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例中,优选地,reduce节点的数量与考勤数据文件的数量一致,将每天的考勤数据随机均匀分配给与考勤数据文件的数量一致的reduce节点(reduce节点的数量同样为预设数量),具体地,可以将每天的考勤数据按照数据量大小均匀地分配给每一reduce节点,以便每一reduce节点能够分配到相同大小的考勤数据。然后,由每一reduce节点将自身所分配到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

例如,若2016年7月1日的考勤数据大小为200m,考勤数据文件的数量为100个,则考勤数据库系统将该200m的考勤数据随机均匀分配至100个reduce节点,并由各个reduce节点将收到的考勤数据插入对应的考勤数据文件的对应的时间维度“2016年7月1日”下,即每个考勤数据文件会插入2m的考勤数据。

在一优选的实施例中,如图4所示,在上述图3的实施例的基础上,上述考勤数据的处理装置还包括:

查询模块103,用于在接收到包括时间维度信息和查询对象信息的考勤数据查询请求后,将所述考勤数据查询请求分发给各reduce节点,以由各reduce节点从考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

本实施例中,如果用户需要对某一查询对象的考勤信息进行查询,则向考勤数据库系统发送一考勤数据查询请求,例如通过终端进行操作,向考勤数据库系统所在的服务器发送该考勤数据查询请求,其中,该考勤数据查询请求中包含时间维度信息和查询对象信息,即包含用户需要查询的该查询对象具体哪天的考勤的时间信息及查询对象的姓名或者编号信息等。

本实施例中,考勤数据库系统将该考勤数据查询请求向各具有考勤数据文件对应的reduce节点进行分发,各具有考勤数据文件对应的reduce节点在接收到分发到自身的考勤数据查询请求后,对考勤数据查询请求进行解析得到时间维度信息和查询对象信息,并从自身对应的考勤数据文件对应的时间维度下的考勤数据中查询出所述查询对象信息的考勤数据。

本实施例中,由于每一reduce节点仅查询其对应的考勤数据文件中的考勤数据,各考勤数据文件中的考勤数据的大小一致,分布均匀,因此,查询较便捷,提高考勤数据的查询性能。

在一优选的实施例中,在上述图3的实施例的基础上,分配模块102包括:

分割单元,用于将每天的考勤数据随机均匀分割成预设数量的考勤数据子集;

获取单元,用于获取一所述考勤数据子集的大小与一所述考勤数据文件的大小的总和,分析所述总和是否小于等于预设阈值;

第一分配单元,用于若所述总和小于等于所述预设阈值,则将各所述考勤数据子集随机分配给预设数量的reduce节点,并由各reduce节点将收到的所述考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例中,在将考勤数据分配给reduce节点时,可以将每天的考勤数据随机均匀分割成预设数量的考勤数据子集,所分割成的考勤数据子集数量与reduce节点的数量一致,然后计算一考勤数据子集的大小与一考勤数据文件的大小的总和,并分析总和是否小于等于预设阈值,例如是否小于等于20g,若小于等于预设阈值,则将各考勤数据子集随机分配给预设数量的reduce节点,例如将某一天200m的考勤数据均匀分割成100份,将100份考勤数据随机分配给100个reduce节点。每一reduce节点在接收到考勤数据子集的考勤数据后,将该考勤数据子集的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例在分割考勤数据后,将考勤数据子集与考勤数据文件两者的大小之和控制在一定范围内,使得每一reduce节点所对应的考勤数据文件不会过大,提高系统查询性能。

在一优选的实施例中,在上述的实施例的基础上,据的处理装置,分配模块102还包括:

第二分配单元,用于若所述总和大于所述预设阈值,则向预定的终端发送提醒信息,以提醒增加reduce节点的数量并重新分配考勤数据至reduce节点;或者自动增加reduce节点的数量,以重新分配考勤数据至reduce节点。

本实施例中,在分割考勤数据后,如果考勤数据子集与考勤数据文件两者的大小之和大于预设阈值,例如大于20g,则考勤数据库系统向预定的终端发送提醒信息,以便增加reduce节点的数量,使得过多的考勤数据分配至这些增加的reduce节点;或者自动增加reduce节点的数量,使得过多的考勤数据分配至这些自动增加的reduce节点。

进一步地,在增加reduce节点的数量后,考勤数据库系统可以重新建立与reduce节点的总数量相等的考勤数据文件,并使得每一考勤数据文件对应一reduce节点,然后重新将每天的考勤数据随机均匀分配给reduce节点,并由各reduce节点将收到的考勤数据插入所对应的考勤数据文件中对应的时间维度下。

本实施例在分割考勤数据后,同样将考勤数据子集与考勤数据文件两者的大小之和控制在一定范围内,使得每一reduce节点所对应的考勤数据文件不会过大,提高系统查询性能。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1