用户行为数据的处理方法、装置及计算机可读存储介质与流程

文档序号:15637241发布日期:2018-10-12 21:37阅读:226来源:国知局

本发明实施例涉及数据处理技术领域,尤其涉及一种用户行为数据的处理方法、装置及计算机可读存储介质。



背景技术:

用户行为分析是分析用户在使用网络资源时表现出来的规律、个性化的习惯。其目的在于收集、分析、预测用户行为。在互联网飞速发展的今天,对用户行为进行分析,提取用户兴趣,了解其特点,能够进行用户个性化定制与推送,为用户提供更加主动的,智能化的服务。

在分析用户行为时需要对用户行为数据进行采集并处理。现有技术中对用户行为数据进行处理时一般采用小时级的批处理技术或流处理技术。小时级的批处理技术由于对数据的批处理技术延时性较高,无法满足实时性较高的业务。而流处理技术虽然能够实现亚秒级别时延的处理,但每次只能处理一条数据,使处理速度较慢。

所以现有技术中采用小时级的批处理技术或流处理技术对用户行为数据进行处理,均不能及时对用户行为数据进行处理及分析,感知用户兴趣。



技术实现要素:

本发明实施例提供一种用户行为数据的处理方法、装置及计算机可读存储介质,解决了现有技术中采用批处理技术或流处理技术对用户行为数据进行处理,均不能及时对用户行为数据进行处理及分析,感知用户兴趣的技术问题。

本发明实施例提供一种用户行为数据的处理方法,包括:

获取用户行为数据;

将所述用户行为数据转化为kafka消息并进行缓存;

采用sparkstreaming计算框架对所述kafka消息进行并行处理,以将所述用户行为数据进行关联;

输出关联后的用户行为数据。

进一步地,如上所述的方法,所述采用sparkstreaming计算框架对所述kafka消息进行并行处理,以将所述用户行为数据进行关联之前,还包括:

采用direct接口获取所述kafka消息;

将所述kafka消息转化为所述sparkstreaming计算框架中的数据格式。

进一步地,如上所述的方法,所述采用sparkstreaming计算框架对所述kafka消息进行并行处理,以将所述用户行为数据进行关联之前,还包括:

采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化;

将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数。

进一步地,如上所述的方法,所述采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化,具体包括:

从日志分析文件中获取训练集样本和测试集样本;

通过所述训练集样本对所述随机森林模型进行训练,并输出计算资源参数;

通过所述测试集样本对所述计算资源参数进行验证;

若所述计算资源参数通过验证,则确定所述计算资源参数为优化后的计算资源参数。

进一步地,如上所述的方法,所述计算资源参数至少包括:批处理间隔时间,kafka消息拉取量,缓存反复使用的弹性分布式数据集个数,cpu资源数,主题分片数。

本发明实施例提供一种用户行为数据的处理装置,包括:

获取模块,用于获取用户行为数据;

转化模块,用于将所述用户行为数据转化为kafka消息;

缓存模块,用于将所述kafka消息进行缓存;

处理模块,用于采用sparkstreaming计算框架对所述kafka消息进行并行处理,以将所述用户行为数据进行关联;

输出模块,用于输出关联后的用户行为数据。

进一步地,如上所述的装置,所述获取模块,还用于采用direct接口获取所述kafka消息;

所述转化模块,还用于将所述kafka消息转化为所述sparkstreaming计算框架中的数据格式。

进一步地,如上所述的装置,还包括:

优化模块,用于采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化;

设置模块,用于将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数。

进一步地,如上所述的装置,所述优化模块,具体用于:

从日志分析文件中获取训练集样本和测试集样本;通过所述训练集样本对所述随机森林模型进行训练,并输出计算资源参数;通过所述测试集样本对所述计算资源参数进行验证;若所述计算资源参数通过验证,则确定所述计算资源参数为优化后的计算资源参数。

进一步地,如上所述的装置,所述计算资源参数至少包括:批处理间隔时间,kafka消息拉取量,缓存反复使用的弹性分布式数据集个数,cpu资源数,主题分片数。

本发明实施例提供一种用户行为数据的处理装置,包括:存储器,处理器以及计算机程序;

其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如上述任一项所述的方法。

本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述任一项所述的方法。

本发明实施例提供一种用户行为数据的处理方法、装置及计算机可读存储介质,通过获取用户行为数据;将所述用户行为数据转化为kafka消息并进行缓存;采用sparkstreaming计算框架对所述kafka消息进行并行处理,以将所述用户行为数据进行关联;输出关联后的用户行为数据。由于sparkstreaming计算框架能够把流式计算转化为一批很小的、确定的批处理作业,能够对数据进行并行处理,所以能够实现秒级的大量数据的处理,进而能够对及时对用户行为数据进行处理及分析,感知用户兴趣。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明用户行为数据的处理方法实施例一的流程图;

图2为本发明用户行为数据的处理方法实施例二的流程图;

图3为本发明用户行为数据的处理装置实施例一的结构示意图;

图4为本发明用户行为数据的处理装置实施例二的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

为了清楚起见,首先说明本发明使用的特定词或短语的定义。

sparkstreaming计算框架:sparkstreaming计算框架的原理是将流式计算转化为一批很小的,确定的批处理作业,以x秒为单位将数据切分成离散的作业,将每批数据看做弹性分布式数据集,使用弹性分布式数据集操作符进行处理,最终以弹性分布式数据集为单位返回。其将spark扩展为大规模流处理作业,可以扩展到百级别的节点规模,达到秒级延迟,高效且具有良好的容错性。

kafka:是开源的分布式发布-订阅消息系统,主要包括数据管道和消息队列。具备高吞吐率、低延迟、可动态扩展节点数据、数据持久化磁盘、多副本防数据丢失、高容错高并发的特点。

图1为本发明用户行为数据的处理方法实施例一的流程图,如图1所示,本实施例的执行主体为用户行为数据的处理装置,该用户行为数据的处理装置可以集成在计算机集群或服务器集群中,则本实施例提供的用户行为数据的处理方法包括以下几个步骤。

步骤101,获取用户行为数据。

其中,用户行为数据为用户通过移动终端在应用程序,网页所发生的行为数据。用户行为数据的数据格式为json格式。

本实施例中以事件为单位获取用户行为数据,一个用户行为事件数据中包括的信息有直接采集的信息及由采集信息衍生的信息。其中直接采集的信息可以包括:用户标识信息,事件发生时间戳,事件类型,用户移动终端号码,移动终端操作系统类型,电子串号(简称:imei),访问链接,基站信息。由采集信息衍生的信息可以包括:移动终端的机型,产地,品牌,内存,颜色类别,价格,硬件配置,用户访问的网页类型、搜索关键词,用户实时位置等。

其中,移动终端可以为智能手机、平板电脑、智能手环、智能手表等。

具体地,本实施例中,获取用户行为数据中的直接采集数据的方法为:当用户通过移动终端发生事件时,采集该事件对应的信息,该事件可以为点击事件,输入事件,搜索事件等。

本实施例中,通过电子串号获取由电子串号衍生的信息的方法为:获取电子串号的前六位数,该前六位数为型号核准号码,并和移动终端机型字典匹配,得到移动终端机型。电子串号的第七八位号为最后装配号,通过与移动终端产地字典匹配得到移动终端的产地。同时通过移动终端机型,产地,匹配从网页爬取的移动终端销售信息,该销售信息可以包括:移动终端品牌,内存,颜色类别,价格,硬件配置等。

本实施例中,通过访问链接获取由访问链接衍生的信息的方法为:解析url域名,匹配主流网站地址,获取用户访问的网页类型、搜索关键词等信息。

本实施例中,通过基站信息获取由基站信息衍生的信息方法为:通过基站信息获取移动终端位置信息从而获取用户实时位置信息。

本实施例中,一个用户行为事件数据中直接采集的信息还可以包括其他信息,由直接采集的信息所衍生的信息也可以包括其他信息,本实施例中对此不做限定。

步骤102,将用户行为数据转化为kafka消息并进行缓存。

具体地,本实施例中,通过kafka系统将每一个用户行为数据以事件为单位转化为kafka消息,并由kafka系统进行缓存。

步骤103,采用sparkstreaming计算框架对kafka消息进行并行处理,以将用户行为数据进行关联。

具体地,本实施例中,将sparkstreaming计算框架部署到多台计算机或服务器上,每个计算机或服务器为集群中的一个节点。采用基于接收器接口(简称为:receiver-based接口)或直接接口(简称为:direct接口)从kafka系统中获取kafka消息,对kafka消息进行并行处理,将用户行为数据进行关联。

若采用receiver-based接口从kafka系统中获取kafka消息,则启动若干接收器(英文为:receiver),从kafka系统中拉取kafka消息,保存成弹性分布式数据集以供处理。若采用direct接口从kafka系统中获取kafka消息,则无需启动receiver,每一轮作业直接从kafka系统中获取kafka消息。本实施例中可以通过任一种接口从kafka系统中获取kafka消息。

步骤104,输出关联后的用户行为数据。

具体地,本实施例中,通过sparkstreaming计算框架对kafka消息进行关联处理后,输出关联后的用户行为数据。

其中,关联后的用户行为数据将每一个用户标识信息下的所有数据进行关联。关联后的用户行为数据可以包括:用户标识信息,每个事件类型发生的事件次数,每个事件发生的时间戳,用户所有的移动终端号码,每种移动终端操作系统类型,每种移动终端对应的电子串号(简称:imei),所有的访问链接,每个事件对应的基站信息,每种移动终端的机型,产地,品牌,内存,颜色类别,价格,硬件配置,用户访问的所有网页的类型、每次访问网页搜索关键词,每个事件对应的用户实时位置。

可以理解的是,关联后的用户行为数据还可以包括其他信息,本实施例中对此不做限定。

本实施例提供的用户行为数据的处理方法,通过获取用户行为数据;将用户行为数据转化为kafka消息并进行缓存;采用sparkstreaming计算框架对kafka消息进行并行处理,以将用户行为数据进行关联;输出关联后的用户行为数据。由于sparkstreaming计算框架能够把流式计算转化为一批很小的、确定的批处理作业,能够对数据进行并行处理,所以能够实现秒级的大量数据的处理,进而能够及时对用户行为数据进行处理及分析,感知用户兴趣。

图2为本发明用户行为数据的处理方法实施例二的流程图,如图2所示,本实施例提供的用户行为数据的处理方法,是在本发明用户行为数据的处理方法实施例一的基础上,还包括了采用direct接口获取kafka消息并进行数据格式转化的步骤,以及采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化的步骤,则本实施例提供用户行为数据的处理方法包括以下步骤。

步骤201,获取用户行为数据。

步骤202,将用户行为数据转化为kafka消息并进行缓存。

本实施例中,步骤201-步骤202的实现方式与本发明用户行为数据的处理方法实施例一中的步骤101-步骤102的实现方式相同,在此不再一一赘述。

步骤203,采用direct接口获取kafka消息。

进一步地,本实施例中,由于采用receiver-based接口从kafka系统中获取kafka消息,对于所有的接收器(英文为:receiver),从kafka系统接收来的kafka消息会存储在sparkstreaming计算框架的执行器中,之后sparkstreaming计算框架提交的作业(英文为:job)会处理这些数据。而sparkstreaming计算框架中的分片(英文为:partition)和kafka系统中的partition并不是相关的,通过加大每个主题(英文为:topic)的partition数量,仅仅是增加线程来处理由单一receiver接收的数据。但是这并没有增加sparkstreaming计算框架在处理数据上的并行度。而采用direct接口方式没有receiver这一层,其会周期性的获取kafka系统中每个topic的每个partition中的最新偏移值(英文为:offsets),之后根据设定的最大分区率(英文为:maxrateperpartition)来处理每个批次。在采用direct接口方式获取kafka消息,kafka系统中的partition与sparkstreaming计算框架中的partition是一一对应的,更易并行读取kafka消息,所以本实施例中采用direct接口获取kafka消息。

步骤204,将kafka消息转化为sparkstreaming计算框架中的数据格式。

进一步地,本实施例中,将kafka消息转化为dstream数据格式,该dstream数据格式为sparkstreaming计算框架中的数据格式。

步骤205,采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化。

进一步地,本实施例中,采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化,具体包括:

首先,从日志分析文件中获取训练集样本和测试集样本。

具体地,本实施例中,在日志分析文件中存储有多次对用户行为数据进行处理后的参数数据,该每次对用户行为数据进行处理后的参数数据至少包括:集群节点数量,节点设备内存,节点设备核数,数据量大小,数据格式,批处理间隔时间,数据输入率,延时时长,处理时间。本实施例中,以每次对用户行为数据进行处理后的参数数据作为训练样本或测试样本。由第一预设个数的训练样本组成训练集,以第二预设个数的测试样本组成测试集。

其中,第一预设个数大于第二预设个数,对第一预设个数和第二预设个数的数值不做限定。如第一预设个数可以为70,第二预设个数可以为30。

其次,通过训练集样本对随机森林模型进行训练,并输出计算资源参数。

进一步地,本实施例中,计算资源参数至少包括:批处理间隔时间,kafka消息拉取量,缓存反复使用的弹性分布式数据集个数,cpu资源数,主题分片数。

其中,cpu资源数包括:cpu内核数及内存大小。

具体地,本实施例中,计算资源参数包括批处理间隔时间是因为:如果这个值设置的过短,则批处理间隔时间所产生的作业并不能在这期间完成处理,那么就会造成数据不断堆积,最终导致sparkstreaming计算框架发生阻塞。而且一般对于批处理间隔时间的设置不会小于500ms,因为过小会导致频繁的提交作业,对整个计算框架造成额外的负担。在平时的应用中,根据不同的应用场景和硬件配置,设在1~10s之间。此目标字段的预测值,会在1~10秒的区间限制内。

具体地,本实施例中,计算资源参数包括kafka消息拉取量是因为:在原有的sparkstreaming计算框架中这个参数默认是没有上限的,即kafka系统当中有多少kafka消息就会直接全部拉出。而根据写入kafka消息的速率以及处理数据的速度,同时这个参数需要结合上面的批处理间隔时间,需要使每个数据分片的数量满足在每个批处理间隔时间的期间拉取的数据能够顺利的处理完毕,做到尽可能高的吞吐量,所以需要根据训练集得到最优的kafka消息拉取量。

具体地,本实施例中,计算资源参数包括缓存反复使用的弹性分布式数据集个数是因为:sparkstreaming中的弹性分布式数据集如果被反复的使用,最好利用cache函数,将该数据流缓存起来,防止过度的调度资源造成的网络开销。所以需要根据训练集得到最优的缓存反复使用的弹性分布式数据集个数。

具体地,本实施例中,计算资源参数包括cpu资源数是因为:一种很常见的一种浪费是一个执行器占用了多个内核,但是总的cpu使用率却不高。这个时候可以考虑让一个执行器占用更少的内核,同时一台节点设备上面增加并行执行的执行器的数量,从而增加cpu利用率。但是增加执行器的时候需要考虑好内存消耗,因为一台机器的内存分配给越多的执行器,每个执行器的内存就越小,会出现内存溢出的情况。所以根据集群能提供的最大限度的cpu资源数,预测cpu内核数及内存大小。如集群内核core最大为72,内存最大为100g。在此限制条件内,根据训练集得到最优的cpu资源数。

具体地,本实施例中,计算资源参数包括主题分片数是因为:partition指的就是数据分片的数量,每一次任务只能处理一个partition的数据,这个值太小了会导致每片数据量太大,导致内存压力;但是如果太大了则会导致分片太多,执行效率降低。所以本实施例中,需要根据训练集得到最优的主题分片数。

具体地,本实施例中,设置计算资源参数和初始随机森林模型,将训练集样本输入到随机森林模型中进行训练,采用广度优先的方式逐层构建树节点,保证遍历数据的次数等于设定的树的层数,单个节点只需计算节点上切分点数据,并根据特征划分,决定是否切分以及切分方式,树的剪枝次数,树的子节点层数。最终通过单棵树的投票结构,以投票最多的结果得到处理时间最短的计算资源参数。

再次,通过测试集样本对计算资源参数进行验证。

具体地,本实施例中,将测试集样本输入到训练后的随机森林模型中,输出计算资源参数后,将输出的计算资源参数与测试集样本中的计算资源参数进行对比,若对比结果在预设数值范围内,则说明训练集样本对随机森林模型进行训练输出的计算资源参数通过验证。其中,输出的计算资源参数与测试集样本中的计算资源参数进行对比的方式不做限定,如可以为计算均方差,差值等。

最后,若计算资源参数通过验证,则确定计算资源参数为优化后的计算资源参数。

若训练集样本对随机森林模型进行训练输出的计算资源参数通过验证,则将该输出的计算资源参数确定为优化后的计算资源参数。

步骤206,将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数。

需要说明的是,步骤205-步骤206只需要在步骤207之前执行即可,与步骤201-步骤204之间无严格的时间限制。可以理解的是,在第一次执行本实施例的用户行为数据的处理方法时需要执行步骤205-步骤206,后续再执行本实施例的用户行为数据的处理方法时无需再次执行步骤205-步骤206。

步骤207,采用sparkstreaming计算框架对kafka消息进行并行处理,以将用户行为数据进行关联。

结合步骤206-步骤207进行说明。进一步地,本实施例中,将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数,由于设置的计算资源参数具有合理的批处理间隔时间,合理的kafka消息拉取量,合理的缓存反复使用的弹性分布式数据集的个数,合理的cpu资源数,所以采用设置了优化后的计算资源参数的sparkstreaming计算框架对kafka消息进行并行处理时,能够有效减少处理时间,并有效减少占用的资源。

步骤208,输出关联后的用户行为数据。

本实施例中,步骤208的实现方式与本发明用户行为数据的处理方法实施例一中的步骤104的实现方式相同,在此不再一一赘述。

本实施例提供的用户行为数据的处理方法,通过获取用户行为数据,将用户行为数据转化为kafka消息并进行缓存,采用direct接口获取kafka消息,将kafka消息转化为sparkstreaming计算框架中的数据格式,采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化,将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数,采用sparkstreaming计算框架对kafka消息进行并行处理,以将用户行为数据进行关联,输出关联后的用户行为数据。由于将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数,按照设置了优化后的计算资源参数的sparkstreaming计算框架对kafka消息进行并行处理,进一步提高了数据的处理速度,有效减少了处理时间,并有效减少了占用的资源。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

图3为本发明用户行为数据的处理装置实施例一的结构示意图,如图3所示,本实施例提供的用户行为数据的处理装置包括:获取模块31,转化模块32,缓存模块33,处理模块34及输出模块35。

其中,获取模块31,用于获取用户行为数据。转化模块32,用于将用户行为数据转化为kafka消息。缓存模块33,用于将kafka消息进行缓存。处理模块34,用于采用sparkstreaming计算框架对kafka消息进行并行处理,以将用户行为数据进行关联。输出模块35,用于输出关联后的用户行为数据。

本实施例提供的用户行为数据的处理装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图4为本发明用户行为数据的处理装置实施例二的结构示意图,如图4所示,本实施例提供的用户行为数据的处理装置在本发明用户行为数据的处理装置实施例一的基础上,进一步地,还包括:优化模块41及设置模块42。

进一步地,获取模块31,还用于采用direct接口获取kafka消息。转化模块32,还用于将kafka消息转化为sparkstreaming计算框架中的数据格式。

进一步地,优化模块41,用于采用随机森林模型对sparkstreaming计算框架中的计算资源参数进行优化。设置模块42,用于将sparkstreaming计算框架中的计算资源参数设置为优化后的计算资源参数。

进一步地,优化模块41,具体用于:

从日志分析文件中获取训练集样本和测试集样本;通过训练集样本对随机森林模型进行训练,并输出计算资源参数;通过测试集样本对计算资源参数进行验证;若计算资源参数通过验证,则确定计算资源参数为优化后的计算资源参数。

其中,计算资源参数至少包括:批处理间隔时间,kafka消息拉取量,缓存反复使用的弹性分布式数据集个数,cpu资源数,主题分片数。

本实施例提供的用户行为数据的处理装置可以执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本发明实施例还提供一种用户行为数据的处理装置,包括:存储器,处理器以及计算机程序。

其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现本发明用户行为数据的处理方法实施例一或本发明用户行为数据的处理方法实施例二中的方法。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现本发明用户行为数据的处理方法实施例一或本发明用户行为数据的处理方法实施例二中的方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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