用 2014年6月至今工作于北京亞信智慧數(shù)據(jù)科技有限公司 BDX大數(shù)據(jù)事業(yè)部,從2014年9月開始從事項(xiàng)目spark相關(guān)應(yīng)用開發(fā)。 這里講解下用戶畫像的技術(shù)架構(gòu)和整體實(shí)現(xiàn),那么就從數(shù)據(jù)整理、數(shù)據(jù)平臺(tái)、面向應(yīng)用三個(gè)方面來(lái)討論一個(gè)架構(gòu)的實(shí)現(xiàn)(個(gè)人見解)。 數(shù)據(jù)整理: 1、數(shù)據(jù)指標(biāo)的的梳理來(lái)源于各個(gè)系統(tǒng)日常積累的日志記錄系統(tǒng),通過(guò)sqoop導(dǎo)入hdfs,也可以用代碼來(lái)實(shí)現(xiàn),比如spark的jdbc連接傳統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的cache。還有一種方式,可以通過(guò)將數(shù)據(jù)寫入本地文件,然后通過(guò)sparksql的load或者h(yuǎn)ive的export等方式導(dǎo)入 HDFS。 2、通過(guò)hive編寫UDF 或者h(yuǎn)iveql 根據(jù)業(yè)務(wù)邏輯拼接ETL,使用戶對(duì)應(yīng)上不同的用戶標(biāo)簽數(shù)據(jù)(這里的指標(biāo)可以理解為為每個(gè)用戶打上了相應(yīng)的標(biāo)簽),生成相應(yīng)的源表數(shù)據(jù),以便于后續(xù)用戶畫像系統(tǒng),通過(guò)不同的規(guī)則進(jìn)行標(biāo)簽寬表的生成。 數(shù)據(jù)平臺(tái) 1、數(shù)據(jù)平臺(tái)應(yīng)用的分布式文件系統(tǒng)為Hadoop的HDFS,因?yàn)镠adoop2.0以后,任何的大數(shù)據(jù)應(yīng)用都可以通過(guò) ResoureManager申請(qǐng)資源,注冊(cè)服務(wù)。比如(sparksubmit、hive)等等。而基于內(nèi)存的計(jì)算框架的出現(xiàn),就并不選用hadoop 的MapReduce了。當(dāng)然很多離線處理的業(yè)務(wù),很多人還是傾向于使用Hadoop,但是hadoop的封裝的函數(shù)只有map和Reduce太過(guò)單一,而不像spark一類的計(jì)算框架有更多封裝的函數(shù)(可參考博客spark專欄)??梢源蟠筇嵘_發(fā)效率。 2、計(jì)算的框架選用Spark以及RHadoop,這里Spark的主要用途有兩種,一種是對(duì)于數(shù)據(jù)處理與上層應(yīng)用所指定的規(guī)則的數(shù)據(jù)篩選過(guò)濾, (通過(guò)Scala編寫spark代碼提交至sparksubmit)。一種是服務(wù)于上層應(yīng)用的SparkSQL(通過(guò)啟動(dòng)spark thriftserver與前臺(tái)應(yīng)用進(jìn)行連接)。 RHadoop的應(yīng)用主要在于對(duì)于標(biāo)簽數(shù)據(jù)的打分,比如利用協(xié)同過(guò)濾算法等各種推薦算法對(duì)數(shù)據(jù)進(jìn)行各方面評(píng)分。 3、MongoDB內(nèi)存數(shù)據(jù)的應(yīng)用主要在于對(duì)于單個(gè)用戶的實(shí)時(shí)的查詢,也是通過(guò)對(duì)spark數(shù)據(jù)梳理后的標(biāo)簽寬表進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換(json格式)導(dǎo)入mongodb,前臺(tái)應(yīng)用可通過(guò)連接mongodb進(jìn)行數(shù)據(jù)轉(zhuǎn)換,從而進(jìn)行單個(gè)標(biāo)簽的展現(xiàn)。(當(dāng)然也可將數(shù)據(jù)轉(zhuǎn)換為Redis中的key value形式,導(dǎo)入Redis集群) 4、mysql的作用在于針對(duì)上層應(yīng)用標(biāo)簽規(guī)則的存儲(chǔ),以及頁(yè)面信息的展現(xiàn)。后臺(tái)的數(shù)據(jù)寬表是與spark相關(guān)聯(lián),通過(guò)連接mysql隨后 cache元數(shù)據(jù)進(jìn)行filter,select,map,reduce等對(duì)元數(shù)據(jù)信息的整理,再與真實(shí)存在于Hdfs的數(shù)據(jù)進(jìn)行處理。 面向應(yīng)用 從剛才的數(shù)據(jù)整理、數(shù)據(jù)平臺(tái)的計(jì)算,都已經(jīng)將服務(wù)于上層應(yīng)用的標(biāo)簽大寬表生成。(用戶所對(duì)應(yīng)的各類標(biāo)簽信息)。那么前臺(tái)根據(jù)業(yè)務(wù)邏輯,勾選不同的標(biāo)簽進(jìn)行求和、剔除等操作,比如本月流量大于200M用戶(標(biāo)簽)+本月消費(fèi)超過(guò)100元用戶(標(biāo)簽)進(jìn)行和的操作,通過(guò)前臺(tái)代碼實(shí)現(xiàn)sql的拼接,進(jìn)行客戶數(shù)目的探索。這里就是通過(guò)jdbc的方式連接spark的thriftserver,通過(guò)集群進(jìn)行HDFS上的大寬表的運(yùn)算求count。(這里要注意一點(diǎn),很多sql聚合函數(shù)以及多表關(guān)聯(lián)join 相當(dāng)于hadoop的mapreduce的shuffle,很容易造成內(nèi)存溢出,相關(guān)參數(shù)調(diào)整可參考本博客spark欄目中的配置信息) 這樣便可以定位相應(yīng)的客戶數(shù)量,從而進(jìn)行客戶群、標(biāo)簽的分析,產(chǎn)品的策略匹配從而精準(zhǔn)營(yíng)銷。 【編輯推薦】 1.數(shù)據(jù)分析師的30種死法 2.如何基于Spark進(jìn)行用戶畫像? 3.數(shù)據(jù)分析工作常見的七種錯(cuò)誤及規(guī)避技巧 4.如何使用隊(duì)列數(shù)據(jù)分析來(lái)留住你的用戶 5.如何實(shí)現(xiàn)基于內(nèi)容和用戶畫像的個(gè)性化推薦 |
|