1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签

用户标签(三):oneid与用户标签之间的相互打通 实现用户标签

时间:2023-02-11 01:58:25

相关推荐

用户标签(三):oneid与用户标签之间的相互打通 实现用户标签

oneid与用户标签之间的相互打通 实现用户画像打标行为

附录说明:整个流程:1、使用数据源数据进行数据清理(整理出关联数据与将要打标的数据值)2、将关联键值与oneid对应关联起来 并整理好将要打标值的外部关联格式化3、数据打标形成格式4、数据输入中间表 目的是汇总多个源产生的数据标签方便下一步汇总使用5、创建hive最终结果表6、对应创建es表建立映射关系7、从中间表读取数据进行汇总8、数据结果输入到建立映射的hive表中在es中查询辛苦码字如有转载请标明出处谢谢!——拜耳法参考链接

附录说明:

打个标签盯住他

实现完整的用户标签需要以完整的oneid生成且oneid定时更新新增用户 才可以实现

整个流程:

所用组件 hive-》es(与hive产生映射的表)数据处理流程

1、使用数据源数据进行数据清理(整理出关联数据与将要打标的数据值)

ods_tds_ddc_sqoop.crmc01c样例数据

2、将关联键值与oneid对应关联起来 并整理好将要打标值的外部关联格式化

oneid_data.oneid_data_sink_id_mapping数据样式

lable.lable_new_dict标签字典样例数据

3、数据打标形成格式

(oneid label1)(oneid label2)(oneid label3)的格式也可以(oneid label1,label2,label3)均可

–数据插入中间表 处理出每条数据的唯一ID和对应ID身份 以及每个打标职位

insert into lable.dws_oneid_hq_app_lableselectnull AS user_name,user_id,null AS user_mobile,null AS user_birthday,null AS user_registime,null AS user_lastlogintime,null AS user_address,label_code,uni,label_name,id_mappingfrom(--关联键值用作与字典表对接使用selectuser_id,uni,id_mappingfrom(--选出每个id对应的最大数值用于去重selectuser_id,CONCAT_WS('&&',max(vsex),max(VMARRIGE)) AS valu,id_mappingfrom(--数据格式化处理 与对接外部值关联选择select case when length(VMOBILE)=11 then VMOBILEwhen length(VLKMOBILE)=11 then VLKMOBILEwhen length(VCERTIFICATENO) is not null then VCERTIFICATENOelse null end ss,casewhen vsex="0" then "男"when vsex="1" then "女"else "性别_其他" end vsex,CASE WHEN VMARRIGE ='01' or VMARRIGE ='已婚' THEN '已婚'WHEN VMARRIGE ='02' or VMARRIGE ='未婚' THEN '未婚'ELSE '婚姻_其他' END VMARRIGEfrom ods_tds_ddc_sqoop.crmc01c)souleft join ( --使用行转列的方式 将oneid转换成对应多行selectuser_id,id_mapping,split(unio,'#&')[1] AS confrom oneid_data.oneid_data_sink_id_mapping lateral view explode(split(id_mapping, ','))tt as unio where dt='${dt}' ) oneidon sou.ss=oneid.con where sou.ss is not null and oneid.user_id is not nullgroup by user_id,id_mapping) tt lateral view explode(split(valu, '&&'))tt as uni) etl left join (select label_name_data,label_code,label_name from lable.lable_new_dict where label_name_data is not null )dict on etl.uni=dict.label_name_data;

4、数据输入中间表 目的是汇总多个源产生的数据标签方便下一步汇总使用

HIVE建表语句:dws_oneid_hq_app_lable(中间层建表)CREATE TABLE `lable.dws_oneid_hq_app_lable`(user_name String COMMENT '用户名称',user_id String COMMENT '用户id',user_mobile String COMMENT '用户手机号',user_birthday String COMMENT '用户生日',user_registime String COMMENT '用户注册时间',user_lastlogintime String COMMENT '用户最后登录时间',user_address String COMMENT '用户地址',lable String COMMENT '标签',label_name String COMMENT '标签名称',label_name_data String COMMENT '数据标签名称',id_mapping String COMMENT '用户身份集合')COMMENT 'oneid打通标签数据汇总第一步中间表';

5、创建hive最终结果表

--结果表对应 es的表创建tdm_oneid_hq_app_lable(对应es表标签汇总表)add jar hdfs:///user/es_hadoop/elasticsearch-hadoop-7.3.2.jar;CREATE EXTERNAL TABLE `lable.tdm_oneid_hq_app_lable`(user_name String COMMENT '用户名称',user_id String COMMENT '用户id',user_mobile String COMMENT '用户手机号',user_birthday String COMMENT '用户生日',user_registime String COMMENT '用户注册时间',user_lastlogintime String COMMENT '用户最后登录时间',user_address String COMMENT '用户地址',lable String COMMENT '标签',id_mapping String COMMENT '用户身份集合')COMMENT '标签数据汇总'STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'TBLPROPERTIES ('es.resource' = 'tdm_oneid_hq_app_lable', 'es.nodes'='prod.dbaas.private','es.port'='19204','es.mapping.id' = 'user_id','es.write.operation'='upsert','es.mapping.names'='user_name:user_name,user_id:user_id,user_mobile:user_mobile,user_birthday:user_birthday,user_registime:user_registime,user_lastlogintime:user_lastlogintime,user_address:user_address,lable:lable,id_mapping:id_mapping')

6、对应创建es表建立映射关系

部分因为业务需求需要创建成分词形式以便于后期查询使用

ES建表语句PUT tdm_oneid_hq_app_lable/?include_type_name=true{"mappings":{"_doc":{"properties":{"user_name":{"type":"keyword"},"user_id":{"type":"keyword"},"user_mobile":{"type":"keyword"},"user_birthday":{"type":"keyword"},"user_registime":{"type":"keyword"},"user_lastlogintime":{"type":"keyword"},"user_address":{"type":"keyword"},"lable":{"type":"text","analyzer": "standard"},"id_mapping":{"type":"text","analyzer": "standard"}}}}}

7、从中间表读取数据进行汇总

add jar hdfs:///user/es_hadoop/elasticsearch-hadoop-7.3.2.jar;add jar hdfs:///user/es_hadoop/httpclient-4.5.5.jar;add jar hdfs:///user/es_hadoop/mons.httpclient.jar;insert into lable.tdm_oneid_hq_app_lableselectmax(user_name) -- '用户名称',,max(user_id) -- '用户id',,max(user_mobile) -- '用户手机号',,max(user_birthday) -- '用户生日',,max(user_registime) -- '用户注册时间',,max(user_lastlogintime) -- '用户最后登录时间',,max(user_address) -- '用户地址',,CONCAT_WS(',',collect_set(lable)),id_mapping -- '用户身份集合'from lable.dws_oneid_hq_app_lable group by user_id -- '用户id',,id_mapping -- '用户身份集合'

8、数据结果输入到建立映射的hive表中在es中查询

GET tdm_oneid_hq_app_lable/_search

辛苦码字如有转载请标明出处谢谢!——拜耳法

都看到这里了非常感谢!

本片章暂未完结 有疑问请+vx :baierfa

参考链接

链接: 用户标签(一):图计算实现ID_Mapping、Oneid打通数据孤岛.

链接: 用户标签(二):增量版ID_Mapping、Oneid图计算打通数据孤岛实现.

链接: 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签.

链接: 用户标签(四):MD5代替Hashcode生成唯一数字编码.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。