99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2021-12-27 閱讀量: 754
用戶標(biāo)簽的分區(qū)存儲(chǔ)與匯聚是什么?

分區(qū)存儲(chǔ)

如果將用戶標(biāo)簽開發(fā)成一張大的寬表,在這張寬表下放幾十種類型標(biāo)簽,那么每天該用戶畫像寬表的ETL作業(yè)將會(huì)花費(fèi)很長時(shí)間,而且不便于向這張寬表中新增標(biāo)簽類型。 要解決這種ETL花費(fèi)時(shí)間較長的問題,可以從以下幾個(gè)方面著手:


·將數(shù)據(jù)分區(qū)存儲(chǔ),分別執(zhí)行作業(yè);

·標(biāo)簽?zāi)_本性能調(diào)優(yōu);

·基于一些標(biāo)簽共同的數(shù)據(jù)來源開發(fā)中間表。


下面介紹一種用戶標(biāo)簽分表、分區(qū)存儲(chǔ)的解決方案。


根據(jù)標(biāo)簽指標(biāo)體系的人口屬性、行為屬性、用戶消費(fèi)、風(fēng)險(xiǎn)控制、社交屬性等維度分別建立對(duì)應(yīng)的標(biāo)簽表進(jìn)行分表存儲(chǔ)對(duì)應(yīng)的標(biāo)簽數(shù)據(jù)。如圖3-3所示。

·人口屬性表:dw.userprofifile_attritube_all;

·行為屬性表:dw.userprofifile_action_all;

·用戶消費(fèi)表:dw.userprofifile_consume_all;

·風(fēng)險(xiǎn)控制表:dw.userprofifile_riskmanage_all;

·社交屬性表:dw.userprofifile_social_all

image.png

3-3 用戶標(biāo)簽數(shù)據(jù)ETL邏輯示意圖

例如創(chuàng)建用戶的人口屬性寬表

image.png

image.png


同樣的,用戶其他id維度(如cookieid、deviceid、registerid 等)的標(biāo)簽數(shù)據(jù)存儲(chǔ),也可以使用上面案例中的表結(jié)構(gòu)。


在上面的創(chuàng)建中通過設(shè)立人口屬性維度的寬表開發(fā)相關(guān)的用戶標(biāo)簽,為了提高數(shù)據(jù)的插入和查詢效率,在Hive中可以使用分區(qū)表的方式,將數(shù)據(jù)存儲(chǔ)在不同的目錄中。在Hive使用select查詢時(shí)一般會(huì)掃描整個(gè)表中所有數(shù)據(jù),將會(huì)花費(fèi)很多時(shí)間掃描不是當(dāng)前要查詢的數(shù)據(jù),為了掃描表中關(guān)心的一部分?jǐn)?shù)據(jù),在建表時(shí)引入了partition的概念。在查詢時(shí),可以通過Hive的分區(qū)機(jī)制來控制一次遍歷的數(shù)據(jù)量。


標(biāo)簽匯聚

上面的案例中,用戶的每個(gè)標(biāo)簽都插入到相應(yīng)的分區(qū)下面, 但是對(duì)一個(gè)用戶來說,打在他身上的全部標(biāo)簽存儲(chǔ)在不同的分區(qū)下面。為了方便分析和查詢,需要將用戶身上的標(biāo)簽做聚合處理。緊接上面的案例,下面講解標(biāo)簽匯聚的開發(fā)案例(見圖3-4)。


標(biāo)簽匯聚后將一個(gè)用戶身上的每個(gè)全量標(biāo)簽匯聚到一個(gè)字段中, 表結(jié)構(gòu)設(shè)計(jì)如下:

CREATE TABLE `dw.userprofile_userlabel_map_all`(

`userid` string COMMENT 'userid',

`userlabels` map<string,string> COMMENT 'tagsmap',)

COMMENT 'userid 用戶標(biāo)簽匯聚'

PARTITIONED BY ( `data_date` string COMMENT '數(shù)據(jù)日期')

image.png

3-4 標(biāo)簽匯聚數(shù)據(jù)

開發(fā)udf函數(shù)“cast_to_json”將用戶身上的標(biāo)簽匯聚成json字符串,執(zhí)行命令將按分區(qū)存儲(chǔ)的標(biāo)簽進(jìn)行匯聚:

insert overwrite table dw.userprofile_userlabel_map_all

partition(data_date= "data_date")

select userid,

cast_to_json(concat_ws(',',collect_set(concat(labelid,':',labelweight))))

as userlabels

from “用戶各維度的標(biāo)簽表

where data_date= " data_date "

group by userid


匯聚后用戶標(biāo)簽的存儲(chǔ)格式如圖3-5所示

image.png

3-5 標(biāo)簽匯聚數(shù)據(jù)

將用戶身上的標(biāo)簽進(jìn)行聚合便于查詢和計(jì)算。例如,在畫像產(chǎn)品中,輸入用戶id后通過直接查詢?cè)摫?,解析?biāo)簽id和對(duì)應(yīng)的標(biāo)簽權(quán)重后,即可在前端展示該用戶的相關(guān)信息(如圖3-6所示)。

image.png

3-6 用戶標(biāo)簽查詢

26.1926
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無數(shù)據(jù)
推薦帖子