一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

画像标签聚合方法、电子设备及存储介质与流程

2022-02-20 05:14:34 来源:中国专利 TAG:

1.本发明涉及数据处理
技术领域
,特别涉及一种画像标签聚合方法、电子设备及存储介质。
背景技术
:2.用户的画像标签是基于用户属性、消费信息进行分析提炼出来的各类特征,统一用户画像标签可支持营销、推荐、分析等各类场景,当前各类画像标签分布在不同数据表中,画像标签拆分有利于权限的精细化管控,但是由于用户的画像标签数据量大、产出时间各异,导致无法一次性将画像标签聚合起来,从而导致将画像标签聚合起来所花费的时间长,效率低,并且在有新标签数据进入时,又要重新开发代码,不够灵活。技术实现要素:3.本发明要解决的技术问题是为了克服现有技术中将画像标签聚合起来所花费的时间长,效率低,不够灵活的缺陷,提供一种画像标签聚合方法、电子设备及存储介质。4.本发明是通过下述技术方案来解决上述技术问题:5.根据本发明的第一方面,提供一种画像标签聚合方法,包括以下步骤:6.根据所述画像标签的元数据信息确定所述画像标签对应的标签表;7.将所述标签表解析成键和值的形式;8.根据所述键对所述画像标签进行第一排序,对相同键的所述画像标签进行第一聚合;9.根据所述值对所述画像标签进行第二排序,对相同值的所述画像标签进行第二聚合。10.较佳地,所述根据所述画像标签的元数据信息确定所述画像标签对应的标签表的步骤之前,所述画像标签聚合方法还包括:11.创建元数据表,所述元数据表用于存储所述元数据信息,所述元数据信息包括所述画像标签所在标签表的路径;12.从所述元数据表中获取所述画像标签的元数据信息。13.较佳地,所述画像标签聚合方法还包括:14.创建所述标签表,所述标签表用于存储所述画像标签,所述画像标签包括用户id(身份标识号码)和标签值;15.在将所述标签表解析成键和值的形式的步骤中,所述键对应于所述用户id,所述值对应于所述标签值。16.较佳地,所述画像标签聚合方法还包括:17.对所述画像标签进行预处理。18.较佳地,所述预处理包括清洗标签表中的脏数据。19.较佳地,所述画像标签聚合方法还包括:20.按照日期对所述标签表进行分区,将所述日期的画像标签加载到对应的分区。21.较佳地,所述分区为第一分片,所述将所述标签表解析成键和值的形式的步骤之前,所述画像标签聚合方法还包括:22.对所述第一分片进行切分或合并,得到第二分片。23.较佳地,所述对相同值的画像标签进行第二聚合的步骤之后,所述画像标签聚合方法还包括:24.新建第一画像宽表,将第二聚合后的所述画像标签输出到所述第一画像宽表中。25.较佳地,所述第一画像宽表用于通过列式存储方式处理所述画像标签。26.较佳地,所述画像标签聚合方法还包括:27.新建第二画像宽表,将所述第一画像宽表关联到所述第二画像宽表中。28.根据本发明的第二方面,提供一种电子设备,包括存储器以及与所述存储器连接的处理器,所述处理器执行存储在所述存储器上的计算机程序时实现如上述的画像标签聚合方法。29.根据本发明的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的画像标签聚合方法。30.本发明的积极进步效果在于:31.本发明通过画像标签的元数据信息直接读取画像标签所在标签表的中的数据,将不同类型不同数据源的画像标签数据按照键值的形式转化成同一标准,再对画像标签数据进行分布式的排序与聚合,最终合成一张宽表,避免了在执行画像标签聚合的任务时配置依赖任务而造成大量低效的代码开发工作,优化了资源使用,大大减少了时间,提高了效率,并且本发明能灵活支持更多画像标签接入,灵活配置程序,而核心逻辑无需更改,有较强的扩展性。附图说明32.图1为本发明的实施例1的画像标签聚合方法的流程图。33.图2为本发明的实施例2的电子设备的结构示意图。具体实施方式34.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。35.实施例136.本实施例提供一种画像标签聚合方法,如图1所示,画像标签聚合方法包括:37.步骤101、根据画像标签的元数据信息确定画像标签对应的标签表。38.其中,画像标签的元数据信息存储于元数据表中,且包括用于表征画像标签对应的hdfs(一种分布式文件系统)路径。39.作为可选的一种实施方式,元数据信息还可以包括用于表征画像标签所在的数据库、画像标签所在的表、画像标签的id和画像标签的数据类型。40.定义画像标签的元数据表,作为可选的一种实施方式,表单主要字段设计如下:41.字段描述db画像标签所在数据库table画像标签所在表labelid画像标签唯一idlabeltype画像标签数据类型pathhdfs路径42.从hive(一种数据仓库工具)中创建标签表,作为可选的一种实施方式,定义标签表的表单主要字段设计如下:[0043][0044]不同画像标签的生产方分别建立对应的的离线标签表,并将画像标签导入标签表中,画像标签包括标签主键即用户id,标签编号和标签值。其中,hdfs路径就是我们在hive中创建的表的路径。[0045]这样,存储的画像标签保存在不同的hdfs数据路径下,而元数据信息记录这些hdfs数据路径。在读取画像标签时,先读取对应的hdfs数据路径,然后再调取hdfs数据路径中的画像标签。[0046]作为可选的一种实施方式,生产方配置为每日调度任务,按照日期对标签表进行动态分区,导入的画像标签按照不同的日期自动进行分区存放,每天会生成一份最新的画像标签表。[0047]作为可选的一种实施方式,在hive中使用orc(一种列式存储)作为标签表的文件存储格式,每个画像标签对应一列,节省hdfs存储资源,其结构示例如下:[0048]struct《uid:string,labelidx1:int,labelidx2:float,labelidx3:decimal(10,2)》[0049]对于直接导入hdfs中的画像标签数据,往往会包含一些错误数据、缺失数据或重复数据等,这些数据统称为脏数据,因此我们需要对数据进行预处理,作为可选的一种实施方式,通过画像标签的元数据信息,包括画像标签的唯一id和画像标签的数据类型等描述画像标签的信息,并在离线标签表中分别抽取对应的画像标签数据进行查看,对画像标签数据本身有一个初步的鉴定,为之后的数据清洗做准备。[0050]在对画像标签数据的缺失数据进行清洗前,我们需要确定对每个字段计算其缺失值比例,根据每个字段的重要性和它的缺失比例,分别的制定清洗策略。比如重要性低的字段,如果其缺失比例很高,可以直接删掉该字段;而如果它的缺失比例很低,可以不做处理或简单填充。[0051]而重要性比较高的字段,比如画像标签数据中的用户id,标签编号和标签值,需要对其进行补全。如果是缺失比例低的字段,可以通过计算,通常使用均值、众数、中位数等方法补全缺失值,也可以根据已有的其他字段,将缺失字段作为目标变量进行预测,从而得到最为可能的补全数据,比如通过身份证号,可以得出年龄;如果是缺失比例比较高的字段,可以和生产方联系,去其他渠道重新取数并补全数据。[0052]作为可选的一种实施方式,在对画像标签做数据清洗时,先抽取小部分数据进行数据清洗,确认清洗后的数据没有问题后再处理全量画像标签。[0053]在对画像标签数据的错误数据和重复数据进行清洗前,我们需要将数据处理成一致的显示格式,主要包括时间、日期、数值等显示格式存在不一致的数据。对于不同画像标签下的特定字段,可以通过自动校验数据的方式来查找问题,比如手机号中出现汉字,然后去除画像标签数据中不需要的字符。如果查找出来的问题比较多,需要先分析是否存在部分画像标签数据的行列在导入时没有对齐的问题,然后再进一步的进行校验与分析,比如使用箱型图查看异常数据。对于完全不合理的数据,可以直接删除,或者按照缺失数据进行处理,比如可以根据其他字段的数据去验证该字段的数据,再通过合乎逻辑的计算与推测进行修改。对于画像标签的数据记录,如果标签主键下有多个完全相同的标签值,可以去掉一些重复的数据记录。[0054]作为可选的一种实施方式,在对离线标签表中的数据进行去除异常、纠正错误、补足缺失等操作后,还包括数据集成、数据变换和数据规约等。实际操作中,对于不清楚数据字段是否保留的情况,可以不做处理。[0055]在对hdfs中的画像标签数据进行预处理后,进一步的审核数据的完整性、准确性和一致性,最终得到更高质量的画像标签数据。[0056]步骤102、将标签表解析成键和值的形式。[0057]在进行步骤102之前,作为可选的一种实施方式,设置输入文件的输入值,抽取每一个画像标签最新分区的hdfs目录下的文件,首先判断目录下的文件是否小于设置的输入值,将目录下的文件大小与设置的输入值依次进行比较,并得到切分后的虚拟存储文件。[0058]作为可选的一种实施方式,若目录下的文件小于或等于设置的输入值,则不做切分,从逻辑上划分为一个虚拟存储文件;若目录下的文件大于设置的输入值且大于输入值的两倍,则以输入值的大小切割出一个虚拟存储文件;若目录下的文件大于设置的输入值且小于输入值的两倍,则平均切分成两个虚拟存储文件。比如,设置输入值为5m(一种计算机存储计量单位),而目录下的文件大小分别为1m,2m,4m,12m,9m,切分后得到的虚拟存储文件则为1m,2m,4m,(5m,3.5m,3.5m),(4.5m,4.5m)。[0059]在本实施例中,虚拟存储文件并不是真的切分,而是属于一种逻辑上的文件。[0060]然后判断虚拟存储文件是否等于设置的输入值,如果等于设置的输入值,则先单独形成一个分片,然后把小于输入值的虚拟存储文件与它之后的虚拟存储文件合并,若最后剩的单个虚拟存储文件并小于输入值,则与单独形成的分片进行合并,使最后形成的分片大小大于或等于设置的输入值,并小于输入值的两倍。比如将1m,2m,4m,5m,3.5m,3.5m,4.5m,4.5m这七个文件进行合并,最终形成(1 2 4)m,5m,(3.5 3.5)m,(4.5 4.5)m,也即7m,5m,7m,9m四个分片。需要说明的是,以上仅为举例,具体设置的输入值大小以实际情况为准。[0061]作为可选的一种实施方式,调用mapreduce(一种计算框架)框架,根据分片的个数设置map(一种映射)任务的个数,然后启动map任务,分别读取对应分片中的hdfs文件,将文件中的每一行画像标签解析成《key,value》(一种数据格式)的形式,每一个键值对调用一次map函数,最终map任务输出的key(键)为uid(用户id),value(值)为labelvalue(标签值)。这些map任务可以并行计算,彼此间几乎没有依赖关系,大大的减少了处理数据的时间,提高了效率。[0062]作为可选的另一种实施方式,也可以调用spark(一种计算引擎)框架,同样可以执行map操作,每个分片运行一个map任务,并将数据解析成《key,value》的形式,最终输出的数据结构示例为《用户id,标签值》,其中用户id对应map的键,标签值对应map的值。[0063]步骤103、根据键对画像标签进行第一排序,对相同键的画像标签进行第一聚合。[0064]对于不同分片解析后的《用户id,标签值》的数据,按照用户id进行排序,升序或降序都可以,从而确保相同用户id的数据排列在一起。[0065]作为可选的一种实施方式,可以调用mapreduce框架的sort(一种排序)操作方法,也可以调用spark框架的filtersortby(一种排序)操作方法。[0066]排序之后,将相同用户id的标签值放在一个集合中,比如《张三,男》,《张三,18》,合并后得到《张三,{男,18}》。[0067]作为可选的一种实施方式,可以调用mapreduce框架的conbine(一种合并)操作方法,也可以调用spark框架的groupby(一种合并)操作方法。[0068]步骤104、根据值对画像标签进行第二排序,对相同值的画像标签进行第二聚合。[0069]作为可选的一种实施方式,调用mapreduce框架的reduce(一种归约)算子,从map端读取数据,再通过画像标签的元数据信息,将读取的value集合中的数据改造成《key,value》格式的数据,其中key存放标签类型,value存放标签值,在遍历reduce算子的迭代器的过程中,基于标签类型,将标签值转化为适用于hadoop(一种分布式系统开源框架)序列化的类型。作为可选的另一种实施方式,也可以调用spark框架执行reduce操作,得到新的键值对《标签类型,标签值》,基于标签类型,将标签值转化为适用于hadoop序列化的类型。[0070]按照标签值进行排序,对于相同标签值的数据进行合并,即去掉重复的标签值,最后再将合并后的标签值重新存入原来的《用户id,标签值》中。[0071]作为可选的一种实施方式,基于文件的个数设置reduce算子的个数,提高画像标签数据的写入效率。[0072]创建画像宽表,每个画像标签对应一列,将reduce算子输出的《用户id,标签值》写到多列画像宽表中,按照orc存储格式,将数据放到对应的位置,从而完成标签合并输出到画像宽表的过程,最后生成合并后的hdfs文件。如果需要合并到多张宽表,可以采用multipleoutputs(一种输出多文件格式)方法对输入路径和输出路径来进行设置,从而将画像标签输出到多张画像宽表中,并分别生成合并后的hdfs文件。[0073]创建全量画像宽表,将最终合并的hdfs文件关联到全量画像宽表中,作为可选的一种实施方式,可以采用全量覆盖的load(加载)方式将合并后的画像标签数据存入全量画像宽表中。[0074]作为可选的另一种实施方式,可以将合并后的hdfs文件目录与全量画像宽表进行关联,并使用msckrepair(修复表常区)命令进行挂载。[0075]本实施例通过画像标签的元数据信息直接读取画像标签所在标签表的中的数据,将不同类型不同数据源的画像标签数据按照《用户id,标签值》的形式转化成同一标准,根据用户id对画像标签数据进行排序与合并,再根据标签值对画像标签数据进行排序与合并,然后将合并后的数据输出到画像宽表orc对应的位置上,最终将各个画像宽表关联起来,合成一张全量画像宽表,避免了在执行画像标签聚合的任务时配置依赖任务而造成大量低效的代码开发工作,优化了资源使用,大大减少了时间,提高了效率,并且本发明能灵活支持更多画像标签接入,灵活配置程序,而核心逻辑无需更改,有较强的扩展性。[0076]实施例2[0077]本实施例提供一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1的画像标签聚合方法。[0078]如图2所示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0079]电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。[0080]总线33包括数据总线、地址总线和控制总线。[0081]存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和高速缓存存储器322,还可以进一步包括只读存储器(rom)323。[0082]存储器32还可以包括具有一组(至少一个)程序模块324的程序工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。[0083]处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1的画像标签聚合方法。[0084]电子设备30也可以与一个或多个外部设备34通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络通信。如图2所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图2未标示,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。[0085]应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。[0086]实施例3[0087]本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1的画像标签聚合方法。[0088]其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。[0089]在可选的一种实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1的画像标签聚合方法。[0090]虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献