文章目錄
一畔濒、用戶畫像數(shù)據(jù)倉(cāng)庫(kù)搭建、數(shù)據(jù)抽取部分
二、大數(shù)據(jù)平臺(tái)稍浆、用戶畫像集市分層設(shè)計(jì)、處理
六朗伶、Java Web毫秒級(jí)實(shí)時(shí)用戶畫像接口服務(wù)
七弦撩、用戶畫像實(shí)時(shí)展示異步觸發(fā)獲取Web自助后臺(tái)
用戶畫像是一個(gè)非常通用普遍使用的系統(tǒng),從我們的架構(gòu)圖中可以看出论皆,從數(shù)據(jù)計(jì)算時(shí)效性上來(lái)講分離線計(jì)算和實(shí)時(shí)計(jì)算益楼。離線計(jì)算一般是每天晚上全量計(jì)算所有用戶,或者按需把用戶數(shù)據(jù)發(fā)生變化的那批用戶重新計(jì)算点晴。離線計(jì)算主要是使用Hive SQL語(yǔ)句處理感凤、Spark數(shù)據(jù)處理、或者基于機(jī)器學(xué)習(xí)算法來(lái)算用戶忠誠(chéng)度模型粒督、用戶價(jià)值模型陪竿、用戶心理模型等。實(shí)時(shí)計(jì)算指定的通過(guò)Flume實(shí)時(shí)日志收集用戶行為數(shù)據(jù)傳輸?shù)終afka消息隊(duì)列屠橄,讓流計(jì)算框架Flink/Storm/SparkStreaming等去實(shí)時(shí)消費(fèi)處理用戶數(shù)據(jù)族跛,并觸發(fā)實(shí)時(shí)計(jì)算模型,計(jì)算完成后把新增的用戶畫像數(shù)據(jù)更新搜索索引锐墙。個(gè)性化推薦礁哄、運(yùn)營(yíng)推廣需要獲取某個(gè)或某些用戶畫像數(shù)據(jù)的時(shí)候直接可以毫秒級(jí)別從搜索索引里搜索出結(jié)果,快速返回給調(diào)用方數(shù)據(jù)溪北。這是從計(jì)算架構(gòu)大概分了兩條線離線處理和實(shí)時(shí)桐绒。
下面我們從上到下詳細(xì)看下每個(gè)架構(gòu)模塊如圖2.3所示:
圖2.3 用戶畫像系統(tǒng)架構(gòu)圖
一、用戶畫像數(shù)據(jù)倉(cāng)庫(kù)搭建刻盐、數(shù)據(jù)抽取部分
(1)收集和用戶畫像相關(guān)的Mysql業(yè)務(wù)數(shù)據(jù)庫(kù)每天增量抽取到Hadoop平臺(tái)掏膏,當(dāng)然第一次的時(shí)候需要全量的來(lái)做初始化,數(shù)據(jù)轉(zhuǎn)化工具可以用Sqoop敦锌,它可以分布式的批量導(dǎo)入數(shù)據(jù)到Hadoop的Hive馒疹;
(2)和用戶畫像相關(guān)的Flume分布式日志收集可以從各個(gè)Web服務(wù)器實(shí)時(shí)收集比如用戶行為、埋點(diǎn)數(shù)據(jù)等乙墙,可以指定source和sink直接把數(shù)據(jù)傳輸?shù)紿adoop平臺(tái)颖变。
二生均、大數(shù)據(jù)平臺(tái)、用戶畫像集市分層設(shè)計(jì)腥刹、處理
在大數(shù)據(jù)平臺(tái)建設(shè)用戶畫像相關(guān)的數(shù)據(jù)集市马胧,分層設(shè)計(jì),道理和推薦衔峰、搜索相似的佩脊。
(1)Hive SQL可以對(duì)一部分用戶數(shù)據(jù)進(jìn)行計(jì)算垫卤,得到一部用戶畫像屬性威彰,如果是特別的復(fù)雜用戶屬性,比如需要用到機(jī)器學(xué)習(xí)的穴肘,我們可以用下面的Spark平臺(tái)來(lái)處理歇盼。
(2)Spark從Hadoop平臺(tái)加載用戶數(shù)據(jù)一個(gè)是進(jìn)行一部分?jǐn)?shù)據(jù)處理、另外用機(jī)器學(xué)習(xí)模算法來(lái)計(jì)算一些復(fù)雜的用戶屬性评抚,比如用戶忠誠(chéng)度模型豹缀、用戶價(jià)值模型、用戶心理模型等慨代,當(dāng)然這些模型也不一定用機(jī)器學(xué)習(xí)邢笙,用規(guī)則實(shí)現(xiàn)也是可以的。
(3)不管是用Hive SQL計(jì)算侍匙,還是用Spark來(lái)處理鸣剪,最終的用戶模型結(jié)果多會(huì)在Hadoop的Hive倉(cāng)庫(kù)存一份,然后會(huì)單獨(dú)寫一個(gè)Spark任務(wù)把這個(gè)用戶畫像模型加載更新到Solr或ES搜索索引里丈积,供線上接口實(shí)時(shí)調(diào)用獲取。另外Hadoop上面存的這份Hive用戶畫像表的數(shù)據(jù)也會(huì)根據(jù)公司的其他部門定制需求债鸡,按需異步的執(zhí)行Hive SQL然后落地到本地文件江滨,然后分發(fā)到需求方的服務(wù)器上,或者返回落地文件訪問(wèn)地址厌均,讓其它部門主動(dòng)wget這個(gè)文件數(shù)據(jù)唬滑。
(1)Flume實(shí)時(shí)日志收集用戶行為數(shù)據(jù)傳輸?shù)終afka消息隊(duì)列棺弊,讓流計(jì)算框架Flink/Storm/SparkStreaming等去實(shí)時(shí)消費(fèi)處理用戶數(shù)據(jù)晶密,并觸發(fā)實(shí)時(shí)計(jì)算模型,計(jì)算完成后把新增的用戶畫像數(shù)據(jù)更新搜索索引模她。實(shí)時(shí)計(jì)算是按需計(jì)算稻艰,那個(gè)用戶行為有變化才會(huì)觸發(fā)計(jì)算,沒(méi)有變化用戶行為數(shù)據(jù)不會(huì)收集到消息隊(duì)列里侈净,自然也不會(huì)觸發(fā)計(jì)算尊勿。
(2)如果有需要實(shí)時(shí)計(jì)算完成后僧凤,除了更新Solr或ES索引,也可以更新到Hbase里面元扔,然后建一個(gè)Hive到Hbase的映射表躯保,就可以對(duì)Hbase里的實(shí)時(shí)用戶畫像數(shù)據(jù)做統(tǒng)計(jì)分析。當(dāng)然也可以Hbase Shell腳本澎语,但沒(méi)有Hive SQL方便靈活途事。
這是毫秒級(jí)提供實(shí)時(shí)用戶畫像數(shù)據(jù)的核心擅羞,不但可以根據(jù)用戶ID來(lái)查詢尸变,而且能根據(jù)任意的定制查詢字段來(lái)精確的篩選。另外祟滴,因?yàn)槭撬阉饕嬲穸瑁匀豢梢酝ㄟ^(guò)關(guān)鍵詞來(lái)做一些模糊的相關(guān)度搜索。
六垄懂、Java Web毫秒級(jí)實(shí)時(shí)用戶畫像接口服務(wù)
(1)因?yàn)槲覀冇玫腟olr/ES搜索引擎骑晶,它們是用Java開發(fā)的,所以Web接口建議也使用Java來(lái)做草慧。
(2)這個(gè)Web接口是實(shí)時(shí)提供給需求方的桶蛔,比如推薦接口獲取某個(gè)用戶畫像的數(shù)據(jù)直接根據(jù)用戶ID就能幾毫秒內(nèi)把對(duì)應(yīng)的用戶畫像數(shù)據(jù)實(shí)時(shí)返回。當(dāng)然也可以根據(jù)其他篩選條件或指定關(guān)鍵詞搜索獲取topN前面幾個(gè)用戶畫像數(shù)據(jù)漫谷,注意這種方式不是把符合篩選條件的所有用戶數(shù)據(jù)返回仔雷,一般是前幾十或幾百個(gè)。最多的話一般一次就幾千舔示。太多的話碟婆,一個(gè)是慢,另一個(gè)是可能會(huì)把Web服務(wù)器比如Tomcat整掛了惕稻。
七竖共、用戶畫像實(shí)時(shí)展示異步觸發(fā)獲取Web自助后臺(tái)
(1)為什么說(shuō)這是個(gè)Web自助后臺(tái)呢?一般是這種應(yīng)用場(chǎng)景俺祠,運(yùn)營(yíng)團(tuán)隊(duì)要篩選一部分用戶做廣告投放公给,這個(gè)時(shí)候通過(guò)Web后臺(tái)指定篩選條件,點(diǎn)擊異步獲取蜘渣,然后這個(gè)異步獲取會(huì)觸發(fā)后臺(tái)異步指定Hive SQL或者其它比如Spark處理程序淌铐、Spark SQL等從用戶畫像集市里查詢出對(duì)應(yīng)的所有用戶集合,這個(gè)用戶集合會(huì)比較大蔫缸,不是幾千條腿准,一般是幾十萬(wàn)、幾百萬(wàn)這個(gè)量級(jí)捂龄,然后落地生成文件释涛。異步計(jì)算完成后會(huì)返回一個(gè)文件地址加叁,自助人員就可以把這個(gè)文件下載下來(lái)做后續(xù)的其他處理去了。
(2)什么叫實(shí)時(shí)展示異步觸發(fā)呢唇撬?實(shí)時(shí)展示指的是我篩選的那部分用戶它匕,可以先實(shí)時(shí)調(diào)用搜索結(jié)果先看下前面一些樣本數(shù)據(jù)如何,能返回多少個(gè)用戶窖认,這次推廣能有多少用戶觸達(dá)豫柬。因?yàn)檎{(diào)用搜索接口是毫秒級(jí)的在頁(yè)面上分頁(yè)展示數(shù)據(jù),很快能看到大概的一個(gè)效果扑浸。如果是異步獲取數(shù)據(jù)烧给,一般計(jì)算時(shí)間會(huì)很長(zhǎng),比如最少幾分鐘喝噪、甚至幾個(gè)小時(shí)等础嫡。執(zhí)行了這么久,不是自己想要的數(shù)據(jù)就白搞了酝惧。所以實(shí)時(shí)展示是快速驗(yàn)證下是不是自己想要的數(shù)據(jù)榴鼎,確定了再去異步大批量的獲取數(shù)據(jù)。
用戶畫像系統(tǒng)架構(gòu)基本上是這個(gè)架構(gòu)晚唇,每個(gè)公司大同小異巫财。用戶畫像系統(tǒng)是一個(gè)通用和核心的系統(tǒng),如果公司有預(yù)算的情況下哩陕,一般是安排一個(gè)用戶畫像小組專門負(fù)責(zé)這塊的研發(fā)平项。
從上面幾個(gè)系統(tǒng)的架構(gòu)大家也能看出來(lái),基于大數(shù)據(jù)的分布式人工智能應(yīng)用系統(tǒng)悍及,一般必須得掌握核心的Hadoop闽瓢、Hive、Hbase心赶、Spark等大數(shù)據(jù)平臺(tái)和框架鸳粉,分布式機(jī)器學(xué)習(xí)也是以它們?yōu)榛A(chǔ)的横浑,所以下面的章節(jié)專門講一下大數(shù)據(jù)基礎(chǔ)核心框架廷雅。
除了大數(shù)據(jù)用戶畫像系統(tǒng)架構(gòu)設(shè)計(jì)
其它深度學(xué)習(xí)框架也有不錯(cuò)的開源實(shí)現(xiàn)祝峻,比如MXNet,后面請(qǐng)大家關(guān)注充電了么app弯汰,課程,微信群湖雹,更多內(nèi)容請(qǐng)看新書《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(人工智能科學(xué)與技術(shù)叢書)》
【新書介紹】
《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》(人工智能科學(xué)與技術(shù)叢書)【陳敬雷編著】【清華大學(xué)出版社】
新書特色:深入淺出咏闪,逐步講解分布式機(jī)器學(xué)習(xí)的框架及應(yīng)用配套個(gè)性化推薦算法系統(tǒng)、人臉識(shí)別摔吏、對(duì)話機(jī)器人等實(shí)戰(zhàn)項(xiàng)目
【新書介紹視頻】
分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(人工智能科學(xué)與技術(shù)叢書)新書【陳敬雷】
視頻特色:重點(diǎn)對(duì)新書進(jìn)行介紹鸽嫂,最新前沿技術(shù)熱點(diǎn)剖析纵装,技術(shù)職業(yè)規(guī)劃建議!聽完此課你對(duì)人工智能領(lǐng)域?qū)⒂幸粋€(gè)嶄新的技術(shù)視野据某!職業(yè)發(fā)展也將有更加清晰的認(rèn)識(shí)橡娄!
【精品課程】
《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》大數(shù)據(jù)人工智能AI專家級(jí)精品課程
【免費(fèi)體驗(yàn)視頻】:
人工智能百萬(wàn)年薪成長(zhǎng)路線/從Python到最新熱點(diǎn)技術(shù)
從Python編程零基礎(chǔ)小白入門到人工智能高級(jí)實(shí)戰(zhàn)系列課
視頻特色: 本系列專家級(jí)精品課有對(duì)應(yīng)的配套書籍《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,精品課和書籍可以互補(bǔ)式學(xué)習(xí)癣籽,彼此相互補(bǔ)充挽唉,大大提高了學(xué)習(xí)效率。本系列課和書籍是以分布式機(jī)器學(xué)習(xí)為主線筷狼,并對(duì)其依賴的大數(shù)據(jù)技術(shù)做了詳細(xì)介紹瓶籽,之后對(duì)目前主流的分布式機(jī)器學(xué)習(xí)框架和算法進(jìn)行重點(diǎn)講解,本系列課和書籍側(cè)重實(shí)戰(zhàn)埂材,最后講幾個(gè)工業(yè)級(jí)的系統(tǒng)實(shí)戰(zhàn)項(xiàng)目給大家塑顺。 課程核心內(nèi)容有互聯(lián)網(wǎng)公司大數(shù)據(jù)和人工智能那些事、大數(shù)據(jù)算法系統(tǒng)架構(gòu)俏险、大數(shù)據(jù)基礎(chǔ)严拒、Python編程、Java編程寡喝、Scala編程糙俗、Docker容器、Mahout分布式機(jī)器學(xué)習(xí)平臺(tái)预鬓、Spark分布式機(jī)器學(xué)習(xí)平臺(tái)巧骚、分布式深度學(xué)習(xí)框架和神經(jīng)網(wǎng)絡(luò)算法、自然語(yǔ)言處理算法格二、工業(yè)級(jí)完整系統(tǒng)實(shí)戰(zhàn)(推薦算法系統(tǒng)實(shí)戰(zhàn)劈彪、人臉識(shí)別實(shí)戰(zhàn)、對(duì)話機(jī)器人實(shí)戰(zhàn))顶猜、就業(yè)/面試技巧/職業(yè)生涯規(guī)劃/職業(yè)晉升指導(dǎo)等內(nèi)容沧奴。
【充電了么公司介紹】
充電了么App是專注上班族職業(yè)培訓(xùn)充電學(xué)習(xí)的在線教育平臺(tái)。
專注工作職業(yè)技能提升和學(xué)習(xí)长窄,提高工作效率滔吠,帶來(lái)經(jīng)濟(jì)效益!今天你充電了么挠日?
https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app
功能特色如下:
【全行業(yè)職位】 - 專注職場(chǎng)上班族職業(yè)技能提升
覆蓋所有行業(yè)和職位疮绷,不管你是上班族,高管嚣潜,還是創(chuàng)業(yè)都有你要學(xué)習(xí)的視頻和文章冬骚。其中大數(shù)據(jù)智能AI、區(qū)塊鏈、深度學(xué)習(xí)是互聯(lián)網(wǎng)一線工業(yè)級(jí)的實(shí)戰(zhàn)經(jīng)驗(yàn)只冻。
除了專業(yè)技能學(xué)習(xí)庇麦,還有通用職場(chǎng)技能,比如企業(yè)管理喜德、股權(quán)激勵(lì)和設(shè)計(jì)山橄、職業(yè)生涯規(guī)劃、社交禮儀住诸、溝通技巧驾胆、演講技巧、開會(huì)技巧贱呐、發(fā)郵件技巧丧诺、工作壓力如何放松、人脈關(guān)系等等奄薇,全方位提高你的專業(yè)水平和整體素質(zhì)驳阎。
【牛人課堂】 - 學(xué)習(xí)牛人的工作經(jīng)驗(yàn)
1.智能個(gè)性化引擎:
海量視頻課程,覆蓋所有行業(yè)馁蒂、所有職位呵晚,通過(guò)不同行業(yè)職位的技能詞偏好挖掘分析,智能匹配你目前職位最感興趣的技能學(xué)習(xí)課程沫屡。
2.聽課全網(wǎng)搜索
輸入關(guān)鍵詞搜索海量視頻課程饵隙,應(yīng)有盡有,總有適合你的課程沮脖。
3.聽課播放詳情
視頻播放詳情金矛,除了播放當(dāng)前視頻,更有相關(guān)視頻課程和文章閱讀勺届,對(duì)某個(gè)技能知識(shí)點(diǎn)強(qiáng)化驶俊,讓你輕松成為某個(gè)領(lǐng)域的資深專家。
【精品閱讀】 - 技能文章興趣閱讀
1.個(gè)性化閱讀引擎:
千萬(wàn)級(jí)文章閱讀免姿,覆蓋所有行業(yè)饼酿、所有職位,通過(guò)不同行業(yè)職位的技能詞偏好挖掘分析胚膊,智能匹配你目前職位最感興趣的技能學(xué)習(xí)文章故俐。
2.閱讀全網(wǎng)搜索
輸入關(guān)鍵詞搜索海量文章閱讀,應(yīng)有盡有紊婉,總有你感興趣的技能學(xué)習(xí)文章购披。
【機(jī)器人老師】 - 個(gè)人提升趣味學(xué)習(xí)
基于搜索引擎和智能深度學(xué)習(xí)訓(xùn)練,為您打造更懂你的機(jī)器人老師肩榕,用自然語(yǔ)言和機(jī)器人老師聊天學(xué)習(xí),寓教于樂(lè),高效學(xué)習(xí)株汉,快樂(lè)人生筐乳。
【精短課程】 - 高效學(xué)習(xí)知識(shí)
海量精短牛人課程,滿足你的時(shí)間碎片化學(xué)習(xí)乔妈,快速提高某個(gè)技能知識(shí)點(diǎn)蝙云。