作者 |【友盟+】數(shù)據(jù)研發(fā)專家 吳丹
【友盟+】數(shù)據(jù)訓(xùn)練營系列
【友盟+】數(shù)據(jù)存量高達60PB,相當于A4 紙正反面寫滿數(shù)字并裝滿 15 萬輛卡車;【友盟+】每天的數(shù)據(jù)計算需要近 2 萬個高性能CPU,每個CPU每 1 毫秒計算 1 億次,相當于 200 個地球上的 100 億人 24 小時不間斷的運算。
互聯(lián)網(wǎng)企業(yè)每天都會產(chǎn)生大量的業(yè)務(wù)數(shù)據(jù),如何構(gòu)建一個極速響應(yīng)、穩(wěn)定安全、低成本的數(shù)據(jù)存儲、加工、挖掘、應(yīng)用的全流程體系,成為企業(yè)實現(xiàn)數(shù)據(jù)化的關(guān)鍵。
【友盟+】工程師首次揭秘,友盟+是如何對超級體量數(shù)據(jù)進行存儲與加工,為超過 150 萬款應(yīng)用以及 710 萬家網(wǎng)站提供全域數(shù)據(jù)服務(wù),并讓這些龐大的數(shù)據(jù)源源不斷的實現(xiàn)秒級計算與應(yīng)用。
我們將從三個部分展開:數(shù)據(jù)存儲、數(shù)據(jù)挖掘、特征加工。
一.數(shù)據(jù)倉庫是如何運作的?
數(shù)據(jù)倉庫輸入、輸出的是什么數(shù)據(jù)?數(shù)據(jù)倉庫是如何運作的?數(shù)據(jù)倉庫到底做了什么?
我們先看一下數(shù)據(jù)倉庫,左邊是輸入數(shù)據(jù),第一是數(shù)據(jù)采集,直接通過JS代碼或者SDK采集設(shè)備行為數(shù)據(jù);第二是業(yè)務(wù)數(shù)據(jù)上傳;第三是營銷領(lǐng)域的問卷數(shù)據(jù)上傳、文件數(shù)據(jù)上傳等。右邊是輸出數(shù)據(jù)。數(shù)據(jù)經(jīng)過處理后主要以四種形式輸出,包括統(tǒng)計報表、數(shù)據(jù)超市、DMP、數(shù)據(jù)報告。
重點介紹中間的數(shù)據(jù)倉庫!居衙+】數(shù)據(jù)存量高達60PB,如果用一張A4 紙正反面寫滿數(shù)字,把A4 紙疊起來可以裝 15 萬輛卡車。倉庫里面有多少張表呢?大概是上萬張。我們每年計算/存儲成本非常高。
大數(shù)據(jù)的挖掘、分析和運算就是我們的CPU,我們每天的運算量需要 2 萬個CPU,相當于 200 個地球上的 100 億人 24 小時不間斷的運算。
數(shù)據(jù)處理。這么龐大的數(shù)據(jù)量在數(shù)據(jù)倉庫內(nèi)是如何運作的?數(shù)據(jù)倉庫組件分為四類:存儲框架、開發(fā)工具、數(shù)據(jù)保障和數(shù)據(jù)管理。
第一, 存儲框架。包含(阿里云)ODPS、HDFS、Oracle、Hbase等。
第二,開發(fā)工具。分為開發(fā)平臺和調(diào)度器。調(diào)度器代表對這個關(guān)系的依賴,讓這個任務(wù)完成之后進行下一個任務(wù)的通知和運行。
第三,數(shù)據(jù)保障機制,通過數(shù)據(jù)監(jiān)控去做保障,監(jiān)控任務(wù)、數(shù)據(jù)異常并報警,通過任務(wù)調(diào)度管理保障數(shù)據(jù)任務(wù)的優(yōu)先級和數(shù)據(jù)質(zhì)量。之前說我們數(shù)據(jù)倉庫里有上萬張表,對每一個生產(chǎn)表打標簽,快速定位到我們想要的表就是數(shù)據(jù)地圖。數(shù)據(jù)健康,如果1TB數(shù)據(jù)執(zhí)行一個小時,就代表很慢,就可以通過數(shù)據(jù)優(yōu)化判斷出你的任務(wù),你的數(shù)據(jù)表可能不夠健康,你的健康分會被降低,健康分降低了優(yōu)先級就會降低。
第四,數(shù)據(jù)管理,比如開發(fā)規(guī)范、數(shù)據(jù)空間管理、元數(shù)據(jù)管理。
1)開發(fā)規(guī)范。這么大的數(shù)據(jù)量為避免數(shù)據(jù)重復(fù)開發(fā)和浪費,我們會對代碼和命名進行有效規(guī)范。還可以通過方法論,比如數(shù)據(jù)分層、統(tǒng)一語言,索引條件優(yōu)先等級劃分,都需要記錄在開發(fā)規(guī)范中。
2)數(shù)據(jù)空間,就是我們有這么一個平臺能看到各個BU、各個平臺、各個部門現(xiàn)在的數(shù)據(jù)狀況。比如,有些同學可能SQL寫的有問題,出現(xiàn)傾斜之類的,我們能夠快速的發(fā)現(xiàn)并通知,及時修復(fù)和優(yōu)化。
3)源數(shù)據(jù)管理,就是在這么大的一個數(shù)據(jù)管理里面快速查找到數(shù)據(jù)表是什么情況,這個數(shù)據(jù)是不是做了壓縮,包括任務(wù)是誰提交的,提交時間等。同時還有每個數(shù)據(jù)公司對自己的數(shù)據(jù)資產(chǎn)有一個盤點,有一個清晰的認識。當前我們到底有什么數(shù)據(jù),這樣的一個數(shù)據(jù)洞察的體系。
二. 數(shù)據(jù)挖掘,如何讓雜亂數(shù)據(jù)統(tǒng)一、分層解耦?
數(shù)據(jù)處理之后,是數(shù)據(jù)挖掘。數(shù)據(jù)挖掘一般分為 6 個步驟:數(shù)據(jù)挖掘、數(shù)據(jù)ETL,第三個是對數(shù)據(jù)進行分析,然后提取出特征工程,從而進行模擬訓(xùn)練,然后再進行模型評估。
今天我們重點講兩塊,一個是數(shù)據(jù)的ETL,一個是特征工程。
1)ETL是什么呢?就是清洗、加工和加載。
第一是控制處理;
第二是數(shù)據(jù)格式化,比如說時間格式,有些是秒,有些是毫秒,有些直接采用的就是年月日時分秒,用的時候肯定要統(tǒng)一,讓下游很方便的應(yīng)用;
第三是數(shù)據(jù)的驗證。在我們已有的知識體系、業(yè)務(wù)邏輯、常識中,對數(shù)據(jù)的邏輯性進行一個判別,如果不符合邏輯的話,我們把這個數(shù)據(jù)進行達標和分割存儲;
第四是數(shù)據(jù)補充。就是手機都會采集設(shè)備上的經(jīng)緯度,是一個負點數(shù),我們并不能直接理解,需要對數(shù)據(jù)進行分割化,圈出一塊區(qū)域,對數(shù)據(jù)做POI關(guān)聯(lián),把經(jīng)緯度做轉(zhuǎn)化;
第五是公共層。以前的數(shù)據(jù)庫講的是泛式關(guān)系,大數(shù)據(jù)更多是OLTP、OLAP的概念。我們更多的以事實行為去做事實寬表。比如說維度表以及數(shù)據(jù)的立方體。這里面提到了數(shù)據(jù)達標和數(shù)據(jù)分割,一般會遵守的準則是所有的數(shù)據(jù)進到了數(shù)據(jù)倉庫,哪怕這個數(shù)據(jù)是無用的、是空的,我們也不會剔除。
有很多數(shù)據(jù)需要做數(shù)據(jù)分層,比方說今天重新建了一張表,這個業(yè)務(wù)發(fā)生變化了,F(xiàn)在互聯(lián)網(wǎng)的狀態(tài)就是擁抱變化,每周都會不停的在開發(fā)新表,如何用 2 分鐘就把這個表變了。分層業(yè)界里面都會分為三層:數(shù)據(jù)接入層ODS、數(shù)據(jù)公共層CDM、數(shù)據(jù)應(yīng)用層ADS。我們針對明細數(shù)據(jù)做分析,比如說廣州市是廣東省的這樣一個對應(yīng)關(guān)系。公共聚合層就是數(shù)據(jù)立方體,數(shù)據(jù)應(yīng)用層就是針對不同的業(yè)務(wù)去劃分獨特的一塊區(qū)域,通過分層可以做到業(yè)務(wù)解耦。
數(shù)據(jù)加工中的一個拉鏈表,左邊這張表記錄了小明每年的學籍,小明在2012- 2013 年之間都是小學,我們記錄開始時間和結(jié)束時間。左邊這個數(shù)據(jù)到右邊這個數(shù)據(jù)很頻繁,只記錄狀態(tài)的變化就可以了。這個場景可能會應(yīng)用于哪些行業(yè)呢?比如電商系統(tǒng),這個商品今天做促銷,明天促銷就取消了,對商品價格打一個快照。
這個表主要就是為了節(jié)省存儲空間,讓運算速度更快。剛剛提到了數(shù)據(jù)立方體,做數(shù)據(jù)分析的同學會經(jīng)常接觸,也就是QB。
簡單的畫了一個圖,橫坐標是一個季度的維度,縱坐標是品類的維度,還有地區(qū)維度,構(gòu)成三維立方體。現(xiàn)實中的維度遠遠不止三個,它會變成 9 塊,每個這樣的組合至少有 9 種組合關(guān)系,現(xiàn)實中這個關(guān)系有可能是 10 個、 20 個。當擴大到 20 的時候數(shù)據(jù)量非常龐大。怎么處理呢?維度的組合關(guān)系,一般還會有一級分類、二級分類,一級分類必然是和二級分類有關(guān)系。比如江蘇省,另一個維度是城市,南京市必然是江蘇省,把這些維度做一些關(guān)聯(lián),我們一般叫關(guān)聯(lián)維度的結(jié)合。
數(shù)據(jù)立方體的鉆取。就是對某一個維度進行下鉆,對月份進行下鉆,就是對維度進行細分。我們來看一個季度的分布,上卷就看到一、二、三季度的分布。我們鎖定了品類的維度叫電子產(chǎn)品,去看季度、地區(qū)的情況,這叫切片。切塊很簡單,多個維度就變成了切塊。以季度和地區(qū)去看品類的情況,做立體三維空間的反轉(zhuǎn),就是數(shù)據(jù)立方體。
三. 特征加工,如何提取有價值的特征?
如何在這么多數(shù)據(jù)中提取跟用戶相關(guān)、跟設(shè)備相關(guān)的特征?通常將特征分為四大類,第一是基本特征,比如空降的種類、數(shù)量、金額、重量、長度等;還有時間上的時長、次數(shù)、購買次數(shù);還有比例上的,比如男女比例,平均比例等;還有復(fù)雜特征,就是將基本特征和統(tǒng)計特征做一個組合;還有自然特征,比如聲音、圖像等。
對這個特征進行分析,大概會分為這幾個步驟,特征分析、特征選取、特征評估。比如對用戶的換機的判斷。第一步先要去想特征,比如性別、年齡、收入水平、財富水平,興趣偏好等。
第二塊就是從現(xiàn)有的數(shù)據(jù)里提取出來,能夠采集到APP數(shù)據(jù),用戶喜歡哪個APP,是玩游戲還是購物。特征的評估是針對這個數(shù)據(jù)做分析,比如這個數(shù)據(jù)是不是可靠。
簡述特征處理的 3 種方式
1)二值化:將一個特征轉(zhuǎn)換成用0/ 1 表示的多個特征
解決兩個特征的差沒有意義的情況,尤其針對枚舉值;
例如:性別男和女,或者年齡段,比如20、 30 相加相減都是沒有意義的。所以我們處理特征,第一位 1 表示男,第 2 位 1 表示女。
2)權(quán)重和平滑處理
用戶特征往往無法拿到具體值,比如品牌特征,用戶往往并不是只對某一品牌感興趣,而是對多個品牌感興趣,只是感興趣的程度不一樣。例如:[lily:0.5, Loft Shine:0.2, J.crew:0.15];時間衰減,歷史數(shù)據(jù)進行權(quán)重處理,如果沒有新增,數(shù)據(jù)更平滑。
3)合理化:異常值發(fā)現(xiàn)
根據(jù)常識或知識體系,剔除不合理數(shù)據(jù),避免對特征的影響。
比如,一個用戶的定位數(shù)據(jù), 100 條記錄都在北京,其中有 1 條在廣州且時間與其他記錄相差幾分鐘,可以對該數(shù)據(jù)進行標注。
【友盟+】全球領(lǐng)先的第三方全域數(shù)據(jù)服務(wù)商。 擁有實時更新的全域數(shù)據(jù)資源、 7 億真實活躍消費者畫像體系、強大的數(shù)據(jù)技術(shù)和領(lǐng)先的算法能力。在此之上,【友盟+】構(gòu)建了以DIP數(shù)據(jù)智能平臺為核心,涵蓋用戶增值、數(shù)據(jù)營銷、新零售、金融風控等服務(wù)的大數(shù)據(jù)產(chǎn)品體系。并通過靈活的SaaS+PaaS模式,激發(fā)企業(yè)和品牌的數(shù)據(jù)智能潛力,驅(qū)動品牌持續(xù)增長。
免責聲明:本文為廠商推廣稿件,企業(yè)發(fā)布本文的目的在于推廣其產(chǎn)品或服務(wù),站長之家發(fā)布此文僅為傳遞信息,不代表站長之家贊同其觀點,不對對內(nèi)容真實性負責,僅供用戶參考之用,不構(gòu)成任何投資、使用等行為的建議。請讀者使用之前核實真實性,以及可能存在的風險,任何后果均由讀者自行承擔。