用戶畫像3:標簽數據存儲

用戶畫像的數據存儲的技術選型有多種,不同存儲方式適用于不同場景。主要有Hive、MySQL、HBase、Elasticsearch。

如果將用戶標簽開發成一個大寬表,那么這個寬表每天ETL作業將會耗費大量時間,所以一般數據會這樣執行:1、分區存儲,分別執行作業;2、標簽腳本性能調優;3、基于一些標簽的共同數據來源,開發中間表。

userid維度用戶標簽數據
標簽聚合

一般地,我們只保留最近一段時間的日全量數據,我們可以規定比如刪除30天以前的數據,這樣來節省存儲的空間。應用到畫像產品中,就是當我們輸入用戶id后通過直接查詢上表,即可解析標簽ID及對應的標簽權重,可在畫像產品前端展示該用戶的相關信息,如下圖:

用戶查詢功能

一、Hive數據倉庫

Hive是基于Hadoop的一個數據倉庫工具,依賴于HDFS存儲數據,可以將結構化的數據文件映射為一張數據庫表,提供SQL語言查詢存儲在HDFS中的數據。一般使用Hive作為數據倉庫用來存儲標簽、用戶特征庫等相關數據。適合大數據量的批量作業,主要用來做離線數據分析,比直接用MapReduce開發效率更高。

數據抽取到數據倉庫

1.數據倉庫

在數倉建模過程中,主要是設計事實表和維度表的建模開發。在畫像系統中主要使用Hive作為數據倉庫,開發相應的事實表和維度表來存儲標簽、人群、應用到服務層的相關數據。

a.事實表

事務事實表:用于描述業務過程,按業務過程的單一或多業務過程可進一步分為單事務事實表和多事務事實表。

周期快照事實表:在一個確定的時間段內對業務狀態進行度量。例如:查看一個用戶近1年的付款金額、近1年購物次數、近30天登錄天數等。

累計快照事實表:對不同的事件之間的時間間隔進行度量。例如:用戶從購買到支付的時長、從下單到訂單完結的時長。一般用于統計時間周期明顯的業務過程。

b.維度表

維度表是對事實屬性的各個維度的描述。例如,商標維度包括:價格、折扣、品牌、原廠家、型號等方面的信息。維度表的開發中,經常遇到維度緩慢變化的情況,對于緩慢變化維,一般采用:

① 重寫維度值,對歷史數據進行覆蓋;

② 保留多條數據,通過插入維度列字段區分;

③ 開發日期分區表,每日分區數據積累當日維度的屬性;

④ 開發拉鏈表,按時間變化進行全量存儲等方式處理。

2、ID-MAP

用來做人群映射的。開發用戶標簽的時候,需要把用戶不同來源的身份通過數據手段識別為同一主體,即ID-Mapping。用戶的屬性、行為相關數據分散在不同來源中,通過ID-Mapping能夠把不同場景下的數據聯系到一起,消除數據孤島。即通過ID-Mapping打通userid和cookieid的對應關系。

串聯同一用戶在不同平臺的行為

在設計ID-Mapping表時,由于一個用戶可在多個設備登錄,一個設備也可以被多個用戶登錄,所以考慮用緩慢變化維表來記錄不同時間點的狀態變化,如下,記錄一個事物從開始到當前狀態的全部狀態變化信息。

ID-Mapping拉鏈表

① 從埋點表和訪問日志表獲取到cookieid和userid同時出現的訪問記錄;

② 將獲取到的userid和cookieid插入cookieid-userid關系表;

③ 創建ID-Map拉鏈表,將每天新增到cookie表的數據與拉鏈表歷史數據做筆記,若有變化或新增,則更新拉鏈表;
④ 創建完成后,每天ETL調度將數據更新到ID-Mapping拉鏈表中。

⑤ 對于拉鏈表,可查看某日的快照數據,以查看某個用戶在某天關聯到的設備id。

對于實際開發中,還需要考慮用戶在不同平臺間(如Web端和App端)的打通情況。

二、MySQL

MySQL是關系型數據庫,在用戶畫像系統中可用于元數據管理、監控預警數據、結果集存儲等應用中。對于量級較小(例如小于百萬)的數據,MySQL具有更快的讀寫速度,web端產品讀寫MySQL數據庫能夠更快的反應。例如元數據、監控預警數據、結果集等可存儲在MySQL中。

1、元數據管理

平臺標簽視圖中的標簽元數據可存儲在MySQL關系數據庫中,便于便簽編輯、查詢、管理。

標簽管理頁面原型

2、監控預警數據

MySQL還可以用于存儲每日對ETL結果的監控信息。從標簽計算數據的監控,到服務層同步數據的監控。

① 標簽計算數據監控

監控每天標簽ETL的數據量,若有異常則發送警告通知,同時暫停后續任務。

② 服務層同步數據監控

即將標簽相關數據從Hive數倉像服務層同步數據的監控。服務層一般采用HBase、Elasticsearchzuo作為數據庫存儲標簽數據供線上調用。當相關數據在Hive中的數量不等于同步到服務層后的數量,則會觸發警告。

3、結果集存儲

在打通畫像業務與業務系統時,考慮將hive中的用戶標簽同步到各個業務系統中,此時MySQL可以用來存儲結果集。

Sqoop是一個用來將Hadoop和關系型數據庫中的數據相關遷移的工具,它可以將關系型數據庫中的數據導入Hadoop的HDFS中,也可將HDFS中的數據導入關系型數據庫中。

三、HBase

HBase是存儲線上接口實時調用的數據,是高性能、列存儲、可伸縮、實時讀寫的分布式存儲系統,運行在HDFS上。Hive是跑MapReduce任務離線查詢,適合用來對一段時間內的數據進行分析查詢,例如,用來計算趨勢或者網站的日志。HBase 則適合用來進行大數據的實時查詢,例如 Facebook 用 HBase 進行消息和實時的分析。

畫像系統中每天在Hive里跑出的結果集數據可同步到HBase數據庫,用于線上實時應用的場景。

Hive與HBase的區別

1、應用場景

彈窗廣告:某渠道運營人員為促進未注冊的新安裝用戶注冊、下單,計劃通過App首頁彈窗發放紅包或優惠券的方式進行引導注冊。

① 通過組合用戶標簽(如“”“未注冊用戶”“”“按照據今天數”小于7天)篩選出對應用戶群,然后將對于人群推送到“廣告系統”,這樣每天畫像系統的ETL調度完成后對應的人群數據會推送到HBase數據庫進行存儲。

用戶分群管理原型

② 當滿足條件的新用戶來訪App時,由在線接口讀取HBase數據庫,查詢到該用戶時就會為其推送該彈窗。

userid用戶標簽聚合數據

四、Elasticsearch

Elasticsearch存儲標簽用于人群計算和人群多維透視分析,是一個開源的分布式全文檢索引擎,開源近乎實時地存儲、檢索數據。而且擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。對于用戶標簽查詢、用戶分群計算、用戶群多維透視分析這類時間響應要求極高的場景適用。

Elasticsearch是面向文檔型數據庫,一條數據在這里就是一個文檔,用json作為文檔格式。

Elasticsearch與關系數據庫的對比


1、應用場景

① 在每天的ETL調度中,將Hive計算的標簽數據導入Elasticsearch中。

② 在標簽調度完成且通過校驗后(標簽監控預警完成),將標簽數據同步到Elasticsearch中。

工程化調度中導入Elasticsearch

③ 在與elasticsearch數據同步完成并通過校驗后,向在MySQL維護的狀態表中插入一條狀態記錄,表示當日數據可用,線上計算用戶人群的接口則讀取最近的數據。

④ 如果當天因為調度延遲或其他原因沒有及時將當日數據導入Elasticsearch,接口也能讀取最近一天對于的數據。如當日數據產出正常時,state字段=0,異常=1,。圖1月20日異常時,線上接口掃描該狀態記錄后不讀取1月20日的數據,而是讀取前一天的數據。

③ 為避免從Hive到Elasticsearch中灌入數據時發生數據缺失,在像MySQL狀態表更新狀態位前需要校驗elasticsearch與Hive中的數據是否一致。

④ Hive中的用戶標簽灌入Elasticsearch中后,業務人員在畫像產品端計算人群或分析人群時,通過RESTful API訪問Elasticsearch進行計算。

畫像產品端計算人群
用戶人群計算架構

總結:

· ES存儲標簽用于人群計算和人群多維透視分析,滿足用戶畫像產品的查詢、分析、使用,查詢時間秒級;

· HBase存儲線上接口實時調用的數據,滿足線上服務的實時調用,查詢時間亞秒級;

· MySQL存儲元數據,監控數據及結果集數據,查詢時間秒級;

· Hive存儲數據相關標簽表,人群計算表的表結構設計,跑大數據作業。



參考資料:

《用戶畫像:方法論與工程化解決方案》趙宏田?著

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
禁止轉載,如需轉載請通過簡信或評論聯系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,224評論 6 529
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,916評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,014評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,466評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,245評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,795評論 1 320
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,869評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,010評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,524評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,487評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,634評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,173評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,884評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,282評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,541評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,236評論 3 388
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,623評論 2 370

推薦閱讀更多精彩內容