发明内容
本发明的主要目的在于提供一种数据处理方法和装置,以解决现有技术将日志文件中的用户标识映射为整数时不准确的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种数据处理方法。根据本发明的数据处理方法包括:抽取多个用户的日志文件中的用户标识,得到多个用户标识,其中,每个用户包括一个用户标识;按照预设规则对所述多个用户标识进行排序;按顺序对排序后的所述多个用户标识添加序号;将所述序号与所述多个用户标识进行映射,得到所述用户的映射标识。
进一步地,在按照预设规则对所述多个用户标识进行排序之前,所述方法还包括:获取记录有所述序号和所述映射标识的映射表和待映射用户标识;从所述映射中查找所述待映射用户标识;判断所述待映射用户标识是否存在于所述映射表中;如果判断出所述待映射用户标识存在于所述映射表中,则将所述待映射用户标识映射为查找到的用户标识所对应的映射标识;如果判断出所述待映射用户标识不存在于所述映射表中,则确定对所述待映射用户标识进行排序。
进一步地,如果判断出所述待映射用户标识不存在于所述映射表中,则确定对所述用户标识进行排序包括:获取所述映射表中的用户标识;将所述映射表中的所述用户标识和所述待映射用户标识一起进行排序。
进一步地,在将所述待映射用户标识映射为查找到的用户标识所对应的映射标识之后,所述方法还包括:将所述待映射用户标识更新到所述映射表中。
进一步地,按照预设规则对所述用户标识进行排序包括:获取待映射用户标识所在的日志文件中的时间信息;按照所述时间信息对所述用户标识进行排序,得到排序后的用户标识;以及按照所述预设规则对所述排序后的用户标识进行排序。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种数据处理装置。根据本发明的数据处理装置包括:抽取单元,用于抽取多个用户的日志文件中的用户标识,得到多个用户标识,其中,每个用户包括一个用户标识;排序单元,用于按照预设规则对所述多个用户标识进行排序;添加单元,用于按顺序对排序后的所述多个用户标识添加序号;映射单元,用于将所述序号与所述多个用户标识进行映射,得到所述用户的映射标识。
进一步地,所述装置还包括:获取单元,用于在按照预设规则对所述多个用户标识进行排序之前,获取记录有所述序号和所述映射标识的映射表和待映射用户标识;查找单元,用于从所述映射中查找所述待映射用户标识;判断单元,用于判断所述待映射用户标识是否存在于所述映射表中;确定单元,用于在判断出所述待映射用户标识存在于所述映射表中时,将所述待映射用户标识映射为查找到的用户标识所对应的映射标识;在判断出所述待映射用户标识不存在于所述映射表中时,确定对所述待映射用户标识进行排序。
进一步地,所述确定单元包括:第一获取模块,用于获取所述映射表中的用户标识;第一排序模块,用于将所述映射表中的所述用户标识和所述待映射用户标识一起进行排序。
进一步地,所述装置还包括:更新单元,用于在将所述待映射用户标识映射为查找到的用户标识所对应的映射标识之后,将所述待映射用户标识更新到所述映射表中。
进一步地,所述排序单元包括:第二获取模块,用于获取待映射用户标识所在的日志文件中的时间信息;第二排序模块,用于按照所述时间信息对所述用户标识进行排序,得到排序后的用户标识;以及第三排序模块,用于按照所述预设规则对所述排序后的用户标识进行排序。
根据发明实施例,通过抽取多个用户的日志文件中的用户标识,得到多个用户标识;按照预设规则对多个用户标识进行排序;按顺序对排序后的多个用户标识添加序号;将序号与多个用户标识进行映射,得到用户的映射标识,即提取用户标识之后,对用户标识进行排序,将排序的序号作为这多个用户标识的新的标识,由于序号为整数,也就是实现了将不规则的用户标识映射为规则的整数,解决了现有技术中将日志文件中的用户标识映射为整数时不准确的问题,达到了准确将日志文件的用户标识映射为整数的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种数据处理方法。该数据处理方法能够在利用用户的日志文件进行数据分析时,将不规则的、自定义的用户标识映射为整数,并且,每个用户标识仅对应一个整数,一个整数可以对应具有相同的用户标识的多个日志文件。通过该方法,能够实现用户标识到整数的映射,使得进行的例如新闻推荐等与用户标识相关的动作时,减少处理用户标识所占用的内存资源,提高了数据处理的效率。
图1是根据本发明实施例的数据处理方法的流程图。如图1所示,该数据处理方法包括步骤如下:
步骤S102,抽取多个用户的日志文件中的用户标识,得到多个用户标识,其中,每个用户拥有一个用户标识;
每个用户只有一个用户标识,对抽取多个日志文件中的用户标识进行去重,对去重后的用户标识保存在一个文件中,即该文件中不包含重复的用户标识。
步骤S104,按照预设规则对多个用户标识进行排序;
步骤S106,按顺序对排序后的多个用户标识添加序号;
步骤S108,将序号与多个用户标识进行映射,得到用户的映射标识。
在进行数据分析时需要获取日志文件,可以采用Impala提取日志文件中的用户标识,得到多个用户标识。可以按照字母的顺序对多个用户标识进行排序,对排序后的用户标识添加序号,这个添加的序号就可以作为用户标识的映射标识。添加的序号是整数,也就实现了将不规则的用户标识映射为整数。需要说明的是,抽取用户标识时还可以采用hive、pig等技术来实现,并不局限于impala。
例如,抽取了100个日志文件中的用户标识,去除其中重复的用户标识,得到90个用户标识,对着90个用户标识进行排序,那么每个用户标识都有一个序号,这个序号就作为这个用户标识的新的标识,即用户的映射标识。
通过上述实施例,提取用户标识之后,对用户标识进行排序,将排序的序号作为这多个用户标识的新的标识,由于序号为整数,也就是实现了将不规则的用户标识映射为规则的整数,解决了现有技术中将日志文件中的用户标识映射为整数时不准确的问题,达到了准确讲日志文件的用户标识映射为整数的效果。
优选地,在得到用户的映射标识后,可以将这些映射标识和用户标识存储在映射表中,在已经存在映射表的情况下,可以将新的待映射用户标识添加到已有的映射表中,即在按照预设规则对多个用户标识进行排序之前,该方法还包括:获取记录有序号和映射标识的映射表和待映射用户标识;从映射中查找待映射用户标识;判断待映射用户标识是否存在于映射表中;如果判断出待映射用户标识存在于映射表中,则将待映射用户标识映射为查找到的用户标识所对应的映射标识;如果判断出待映射用户标识不存在于映射表中,则确定对待映射用户标识进行排序。
如果已经存在映射表,为了避免映射表中相同的用户标识对应不同的序号,在对新的待映射用户标识进行映射时,判断已有的映射表中是否有该待映射用户标识,如果有,则直接将该待映射用户标识映射到已有的映射标识上;如果没有改待映射用户标识,则对待映射用户标识进行排列,以得到新的待映射用户标识的序号,即映射标识。
具体地,在对新的待映射标识进行排序时,需要和已有的映射表中的所有的用户标识一起排序,即获取映射表中的用户标识;将映射表中的用户标识和待映射用户标识一起进行排序。
具体地,在将待映射用户标识映射为查找到的用户标识所对应的映射标识之后,方法还包括:将待映射用户标识更新到映射表中。
例如,已有的映射表如表1所示。表1中记录了用户标识A、B、C、D、F、G和相应的序号1、2、3、4、5、6,当新的待映射标识为C时,从表1中查找到用户标识C,那么新的待映射标识C的映射标识为表1中用户标识C对应的3,也就完成了自定义用户标识到整数的映射;当新的待映射标识为E时,从表1没有查找该用户标识,则对表1中的A、B、C、D、F、G和新的待映射标识E进行排序,得到的顺序及每个用户标识所对应的映射标识如表2所示,即已经被映射的用户标识的序号不再改变,按顺序对新的待映射标识进行排序,也就完成了自定义用户标识到整数的映射。在新的待映射标识E映射结束后,得到了新的映射表,该表中记录了每个序号所对应的用户标识。
表1
用户标识 |
A |
B |
C |
D |
F |
G |
映射标识 |
1 |
2 |
3 |
4 |
5 |
6 |
表2
用户标识 |
A |
B |
C |
D |
F |
G |
E |
映射标识 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
通过上述实施例,先判断已有的映射表中是否有待映射标识,当待映射标识没有时才对映射表中的所有用户标识和待映射标识进行排序,能够提高将用户标识转换为整数的效率,还能节约数据处理的资源。
优选地,按照预设规则对用户标识进行排序包括:获取待映射用户标识所在的日志文件中的时间信息;按照时间信息对用户标识进行排序,得到排序后的用户标识;以及按照预设规则对排序后的用户标识进行排序。
按照分析数据的需求,可以对每天的日志文件进行数据处理,不同日期的日志文件可能属于相同的用户,也就具有相同的用户标识,为了避免不同日期的用户标识被合并,并保证已映射的用户标识不再被更改,在映射用户标识为整数时,增加时间维度,按照时间对用户标识进行排序。即表1所示的用户标识还包括时间信息,如下表3,在排序的时候按照时间信息和用户标识两个因素进行排序,以保证已有的映射标识不会改变。
表3
通过上述实施例,在排序时按照时间信息和用户标识两个因素进行排序,保证了已有的映射标识不会被改变,也避免了不同用户标识映射为同一个映射标识,从而避免了映射用户标识时出错的情况,进而解决了现有技术中将日志文件中的用户标识映射为整数时不准确的问题。
本发明实施例还提供了一种数据处理装置。该装置可以通过计算机实现其功能。需要说明的是,本发明实施例的数据处理装置可以用于执行本发明实施例所提供的数据处理方法,本发明实施例的数据处理方法也可以通过本发明实施例所提供的数据处理装置来执行。
图2是根据本发明实施例的数据处理装置的示意图。如图2所示,该数据处理装置包括:抽取单元10、排序单元30、添加单元50和映射单元70。
抽取单元10用于抽取多个用户的日志文件中的用户标识,得到多个用户标识,其中,每个用户拥有一个用户标识;
每个用户只有一个用户标识,对抽取多个日志文件中的用户标识进行去重,对去重后的用户标识保存在一个文件中,即该文件中不包含重复的用户标识。
排序单元30用于按照预设规则对多个用户标识进行排序;
添加单元50用于按顺序对排序后的多个用户标识添加序号;
映射单元70用于将序号与多个用户标识进行映射,得到用户的映射标识。
在进行数据分析时需要获取日志文件,可以采用Impala提取日志文件中的用户标识,得到多个用户标识。可以按照字母的顺序对多个用户标识进行排序,对排序后的用户标识添加序号,这个添加的序号就可以作为用户标识的映射标识。添加的序号是整数,也就实现了将不规则的用户标识映射为整数。需要说明的是,抽取用户标识时还可以采用hive、pig等技术来实现,并不局限于impala。
例如,抽取了100个日志文件中的用户标识,去除其中重复的用户标识,得到90个用户标识,对着90个用户标识进行排序,那么每个用户标识都有一个序号,这个序号就作为这个用户标识的新的标识,即用户的映射标识。
通过上述实施例,提取用户标识之后,对用户标识进行排序,将排序的序号作为这多个用户标识的新的标识,由于序号为整数,也就是实现了将不规则的用户标识映射为规则的整数,解决了现有技术中将日志文件中的用户标识映射为整数时不准确的问题,达到了准确讲日志文件的用户标识映射为整数的效果。
优选地,在得到用户的映射标识后,可以将这些映射标识和用户标识存储在映射表中,在已经存在映射表的情况下,可以将新的待映射用户标识添加到已有的映射表中,即获取单元,用于在按照预设规则对多个用户标识进行排序之前,获取记录有序号和映射标识的映射表和待映射用户标识;查找单元,用于从映射中查找待映射用户标识;判断单元,用于判断待映射用户标识是否存在于映射表中;确定单元,用于在判断出待映射用户标识存在于映射表中时,将待映射用户标识映射为查找到的用户标识所对应的映射标识;在判断出待映射用户标识不存在于映射表中时,确定对待映射用户标识进行排序。
如果已经存在映射表,为了避免映射表中相同的用户标识对应不同的序号,在对新的待映射用户标识进行映射时,判断已有的映射表中是否有该待映射用户标识,如果有,则直接将该待映射用户标识映射到已有的映射标识上;如果没有改待映射用户标识,则对待映射用户标识进行排列,以得到新的待映射用户标识的序号,即映射标识。
具体地,在对新的待映射标识进行排序时,需要和已有的映射表中的所有的用户标识一起排序,即确定单元包括:第一获取模块,用于获取映射表中的用户标识;第一排序模块,用于将映射表中的用户标识和待映射用户标识一起进行排序。
具体地,更新单元,用于在将待映射用户标识映射为查找到的用户标识所对应的映射标识之后,将待映射用户标识更新到映射表中。
例如,已有的映射表如表1所示。表1中记录了用户标识A、B、C、D、F、G和相应的序号1、2、3、4、5、6,当新的待映射标识为C时,从表1中查找到用户标识C,那么新的待映射标识C的映射标识为表1中用户标识C对应的3,也就完成了自定义用户标识到整数的映射;当新的待映射标识为E时,从表1没有查找该用户标识,则对表1中的A、B、C、D、F、G和新的待映射标识E进行排序,得到的顺序及每个用户标识所对应的映射标识如表2所示,即已经被映射的用户标识的序号不再改变,按顺序对新的待映射标识进行排序,也就完成了自定义用户标识到整数的映射。在新的待映射标识E映射结束后,得到了新的映射表,该表中记录了每个序号所对应的用户标识。
通过上述实施例,先判断已有的映射表中是否有待映射标识,当待映射标识没有时才对映射表中的所有用户标识和待映射标识进行排序,能够提高将用户标识转换为整数的效率,还能节约数据处理的资源。
优选地,排序单元包括:第二获取模块,用于获取待映射用户标识所在的日志文件中的时间信息;第二排序模块,用于按照时间信息对用户标识进行排序,得到排序后的用户标识;以及第三排序模块,用于按照预设规则对排序后的用户标识进行排序。
按照分析数据的需求,可以对每天的日志文件进行数据处理,不同日期的日志文件可能属于相同的用户,也就具有相同的用户标识,为了避免不同日期的用户标识被合并,并保证已映射的用户标识不再被更改,在映射用户标识为整数时,增加时间维度,按照时间对用户标识进行排序。即表1所示的用户标识还包括时间信息,如下表3,在排序的时候按照时间信息和用户标识两个因素进行排序,以保证已有的映射标识不会改变。
通过上述实施例,在排序时按照时间信息和用户标识两个因素进行排序,保证了已有的映射标识不会被改变,也避免了不同用户标识映射为同一个映射标识,从而避免了映射用户标识时出错的情况,进而解决了现有技术中将日志文件中的用户标识映射为整数时不准确的问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。