基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析_第1頁
基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析_第2頁
基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析_第3頁
基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析_第4頁
基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于大數(shù)據(jù)的電商數(shù)倉數(shù)據(jù)分析DataAnalysisofE-commerceWarehouseBasedonBigData摘要數(shù)據(jù)倉庫(DataWarehouse),是為企業(yè)所有決策制定過程,提供所有系統(tǒng)數(shù)據(jù)支持的戰(zhàn)略集合。數(shù)據(jù)倉庫本身并不“生產(chǎn)”數(shù)據(jù),同時(shí)自身也不需要“消費(fèi)”任何的數(shù)據(jù),數(shù)據(jù)來源于外部,并且開放給外部應(yīng)用,這也是為什么叫“倉庫”,而不叫“工廠”的原因。通過對數(shù)據(jù)倉庫中數(shù)據(jù)的分析,可以幫助企業(yè)改進(jìn)業(yè)務(wù)流程、控制成本、提高產(chǎn)品質(zhì)量等,通過一個個的指標(biāo),可以直觀的看出企業(yè)在運(yùn)行的過程中每一個階段的狀態(tài),對企業(yè)領(lǐng)導(dǎo)層的決策判斷以及整體的發(fā)展走向起著至關(guān)重要的作用。數(shù)據(jù)倉庫,并不是數(shù)據(jù)的最終目的地,而是為數(shù)據(jù)最終的目的地做好準(zhǔn)備。這些準(zhǔn)備包括對數(shù)據(jù)的:清洗、轉(zhuǎn)義、分類、重組、合并、拆分、統(tǒng)計(jì)等,最終這些數(shù)據(jù)將會流向企業(yè)中的各個系統(tǒng),例如報(bào)表系統(tǒng)、用戶畫像、推薦系統(tǒng)、機(jī)器學(xué)習(xí)、風(fēng)控系統(tǒng)等,為這些系統(tǒng)的運(yùn)行提供數(shù)據(jù)支持。在本項(xiàng)目中,使用Java代碼編寫數(shù)據(jù)生成腳本,用于隨機(jī)生成日志數(shù)據(jù)文件,然后使用第一層Flume來讀取這些日志數(shù)據(jù)文件,在Flume中將這些數(shù)據(jù)日志根據(jù)事件類型進(jìn)行分類并且將臟數(shù)據(jù)進(jìn)行過濾,然后將數(shù)據(jù)傳輸給Kafka進(jìn)行削峰,再用第二層Flume消費(fèi)Kafka中的數(shù)據(jù),將數(shù)據(jù)傳輸?shù)紿DFS上進(jìn)行保存,最后在Hive中建表,導(dǎo)入HDFS中的數(shù)據(jù),在Hive中對數(shù)據(jù)進(jìn)行分析計(jì)算,最終將需求數(shù)據(jù)使用Presto進(jìn)行查看。關(guān)鍵詞數(shù)倉、大數(shù)據(jù)、電商、數(shù)據(jù)分析AbstractDataWarehouseisastrategicsetthatprovidesallsystemdatasupportforalldecision-makingprocessesinanenterprise.Thedatawarehouseitselfdoesnot“produce”thedata,anditdoesnotneedto“consume”anydata.Thedatacomesfromtheoutsideandisopentoexternalapplications.Therefore,itiscalled“warehouse”ratherthan“factory”.Throughtheanalysisofthedatainthedatawarehouse,itcanhelptheenterprise,improvethebusinessprocess,controlthecost,improvetheproductquality,etc.Throughtheindicators,youcanintuitivelyseethestateofeachstageoftheenterpriseintheprocessofoperation,totheenterprisethedecision-makingjudgmentoftheleadershipandtheoveralldevelopmenttrendplayacrucialrole.Thedatawarehouseisnotthedestinationofthedata,butispreparedforthedestinationofthedata.Thesepreparationsincludedatacleaning,escaping,classification,reorganization,merging,splitting,statistics,etc.,andultimatelythesedatawillflowtovarioussystemsintheenterprise,suchasreportingsystems,userportraits,recommendationsystems,machinelearning,andwind.Controlsystems,etc.,providedatasupportfortheoperationofthesesystems.Inthisproject,datagenerationscriptsarewritteninJavacodeforrandomlygeneratinglogdatafiles,andthenthefirstlayerofFlumeisusedtoreadtheselogdatafiles.ThesedatalogsaresortedpereventtypeanddirtyinFlume.Thedataisfiltered,andthenthedataistransmittedtoKafkaforpeakclipping.ThedatainKafkaisconsumedbythesecondlayerFlume,andthedataistransferredtoHDFSforstorage.Finally,thedataisbuiltinHiveandthedatainHDFSisimported.ThedataisanalyzedandcalculatedinHive,andthedemanddataisfinallyviewedusingPresto.Keywords:DataWarehouse,BigData,E-commerce,DataAnalysis長春工程學(xué)院畢業(yè)設(shè)計(jì)(論文)PAGEPAGE48目錄TOC\o"1-2"\h\z\u1引言 11.1設(shè)計(jì)的目的及意義 11.2企業(yè)生產(chǎn)的實(shí)際問題 11.3設(shè)計(jì)方案及技術(shù)路線 12項(xiàng)目需求及架構(gòu)設(shè)計(jì) 22.1項(xiàng)目需求分析 22.2項(xiàng)目框架 33用戶行為數(shù)據(jù)采集 43.1數(shù)據(jù)生成模塊 43.2數(shù)據(jù)采集模塊 124用戶行為數(shù)據(jù)倉庫 234.1數(shù)倉分層概念 234.2數(shù)倉搭建環(huán)境準(zhǔn)備 244.3數(shù)倉搭建之ODS層 264.4數(shù)倉搭建之DWD層 275系統(tǒng)業(yè)務(wù)數(shù)據(jù)倉庫 305.1電商業(yè)務(wù)與數(shù)據(jù)結(jié)構(gòu)簡介 305.2數(shù)倉搭建 336業(yè)務(wù)需求數(shù)據(jù)分析 406.1需求一:用戶活躍主題 406.2需求二:用戶新增主題 426.3需求三:GMV成交總額 436.4需求四:轉(zhuǎn)化率 447總結(jié) 46參考文獻(xiàn) 47致謝 481引言1.1設(shè)計(jì)的目的及意義隨著網(wǎng)絡(luò)科技的發(fā)展與壯大,人們生活購物方式不再局限于實(shí)體店,人們更多的是選擇在淘寶、京東上面購物。自2009年天貓的“雙十一”購物活動以來,包括京東、蘇寧易購、國美在線、1號店、亞馬遜等大型電商平臺也紛紛參與進(jìn)來,“雙十一”不再是阿里巴巴的專利。每年的11月11日也成為了消費(fèi)者“買買買”的重大節(jié)日。2014年“雙十一”當(dāng)天全網(wǎng)銷售額為805億元,2015年1229.37億元,2016年1770.4億元,2017年2539.7億元,2018年更是達(dá)到了3143億元,在這一筆筆龐大的交易額背后,是一條條人們交易的訂單數(shù)據(jù),是人們?yōu)g覽網(wǎng)頁商品的事件日志數(shù)據(jù),我們需要在這些冗余龐大的數(shù)據(jù)集中找出我們需要的那一條數(shù)據(jù),而這一條數(shù)據(jù)在企業(yè)的一些決策上起到指導(dǎo)的作用。本項(xiàng)目在企業(yè)中起到一個“倉庫”的作用,用戶在電商網(wǎng)站上的一系列查看、點(diǎn)擊、下單、支付等操作都會在后臺形成系列的數(shù)據(jù),而這些數(shù)據(jù)將會被本項(xiàng)目中的Flume采集,然后途經(jīng)Kafka,最終存儲在HDFS上,當(dāng)我們需要對這些數(shù)據(jù)進(jìn)行分析的時(shí)候,可以使用Hive將數(shù)據(jù)讀取到Hive中,然后進(jìn)行分析計(jì)算,通過分析計(jì)算得到用戶活躍、用戶新增、用戶留存、GMV成交總額等等一系列指標(biāo),通過這些指標(biāo)可以輔佐企業(yè)領(lǐng)導(dǎo)層的決策。1.2企業(yè)生產(chǎn)的實(shí)際問題大數(shù)據(jù)中需要解決的三個問題:大數(shù)據(jù)的存儲、大數(shù)據(jù)的傳輸以及大數(shù)據(jù)的運(yùn)算,所有的大數(shù)據(jù)框架都是為了解決這三個問題而研發(fā)的,例如Hadoop以及Hadoop衍生的生態(tài)圈,Spark以及Spark衍生的生態(tài)圈。而在企業(yè)中同樣也面臨著這樣的問題,當(dāng)用戶在手機(jī)App上進(jìn)行各種操作時(shí),在后臺會產(chǎn)生許多的日志數(shù)據(jù)信息,這些信息中有的是有價(jià)值的,有的是沒有價(jià)值的,如何將這龐大的數(shù)據(jù)給存儲起來,如何在這海量的數(shù)據(jù)中提取出有用的,如何有效率的獲取這些數(shù)據(jù),都是企業(yè)中亟待解決的難題。1.3設(shè)計(jì)方案及技術(shù)路線設(shè)計(jì)方案:根據(jù)上述的4個問題,設(shè)計(jì)了該項(xiàng)目。在本項(xiàng)目中,用Hadoop框架中的HDFS來解決大數(shù)據(jù)的存儲問題,用Hive來解決大數(shù)據(jù)的計(jì)算問題,用Flume和Kafka解決數(shù)據(jù)的傳輸問題。在整個技術(shù)的選擇上,充分考慮了框架與框架之間的兼容性,令人欣喜的是,Hive、Flume、Kafka都是基于Hadoop衍生出來的,所以這些框架兼容性天生就很好,剩下的無非就是考慮框架版本之間的選擇問題。技術(shù)路線:在本項(xiàng)目中,一共使用到的技術(shù)有:Hadoop,Hive,Zookeeper,F(xiàn)lume,Kafka,MySQL,Presto,Sqoop。由于無法獲取企業(yè)中真實(shí)的生產(chǎn)數(shù)據(jù),所以我們將會編寫一個Java代碼封裝為腳本來生產(chǎn)隨機(jī)的JSON字符串,用來模擬生產(chǎn)環(huán)境中的數(shù)據(jù)結(jié)構(gòu)。在整個項(xiàng)目中日志數(shù)據(jù)的來源分為兩種,一種是日志數(shù)據(jù)系統(tǒng),一種是業(yè)務(wù)數(shù)據(jù)系統(tǒng),所以我們準(zhǔn)備了兩種結(jié)構(gòu)的數(shù)據(jù)。整個項(xiàng)目的數(shù)據(jù)流程設(shè)計(jì):(1)日志數(shù)據(jù)流程:1)用日志數(shù)據(jù)生成腳本生成日志數(shù)據(jù)文件;2)利用第一層Flume讀取日志文件,然后在Flume中使用攔截器攔截?cái)?shù)據(jù),進(jìn)行清洗,過濾臟數(shù)據(jù),并且將數(shù)據(jù)格式轉(zhuǎn)換成我們需要的,然后將過濾后的數(shù)據(jù)導(dǎo)入到Kafka中,這時(shí)Kafka起到一個削峰的作用;3)將Kafka中的數(shù)據(jù)使用第二層Flume進(jìn)行消費(fèi),消費(fèi)Kafka中的數(shù)據(jù);4)將Flume對接上HDFS,將日志文件存儲到HDFS;5)用Hive建表,將HDFS上的數(shù)據(jù)導(dǎo)入到Hive中,以表的形式存在;6)在Hive中將表進(jìn)行分層解耦,分析統(tǒng)計(jì)各項(xiàng)需求;7)用Presto查看表數(shù)據(jù)信息。(2)業(yè)務(wù)數(shù)據(jù)流程:1)在MySQL中建表,并將業(yè)務(wù)數(shù)據(jù)日志導(dǎo)入MySQL中;2)用Sqoop將MySQL中的數(shù)據(jù)導(dǎo)入到HDFS上進(jìn)行存儲;3)在Hive中建表,然后將HDFS中的數(shù)據(jù)讀取到Hive中,在Hive上對數(shù)據(jù)進(jìn)行分層處理,然后統(tǒng)計(jì)分析計(jì)算獲取到最終業(yè)務(wù)需求的數(shù)據(jù);4)用Presto查看表數(shù)據(jù)信息。2項(xiàng)目需求及架構(gòu)設(shè)計(jì) 2.1項(xiàng)目需求分析(1)數(shù)據(jù)采集平臺搭建;(2)實(shí)現(xiàn)用戶行為數(shù)據(jù)倉庫的分層搭建;(3)實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)倉庫的分層搭建;(4)針對數(shù)據(jù)倉庫中的數(shù)據(jù)進(jìn)行,活躍、新增、GMV成交總額、轉(zhuǎn)化率等報(bào)表分析。2.2項(xiàng)目框架2.2.1技術(shù)選型數(shù)據(jù)采集傳輸:Flume、Kafka、Sqoop。數(shù)據(jù)存儲:MySql、HDFS。數(shù)據(jù)計(jì)算:Hive、Tez。數(shù)據(jù)查詢:Presto。2.2.2系統(tǒng)數(shù)據(jù)流程設(shè)計(jì)圖2-1數(shù)據(jù)流程圖2.2.3框架版本選型表2-1框架版本選型產(chǎn)品版本Hadoop2.7.2Flume1.7.0KafkaHive1.2.1Sqoop1.4.6MySQL5.6.24Java1.8Zookeeper3.4.10Presto0.1892.2.4集群資源規(guī)劃設(shè)計(jì)表2-2集群資源規(guī)劃設(shè)計(jì)服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103HDFSNameNodeDataNodeDataNodeDataNodeSecondaryNameNodeYarnNodeManagerResourcemanagerNodeManagerNodeManagerZookeeperZookeeperZookeeperZookeeperFlume(采集日志)FlumeFlumeKafkaKafkaKafkaKafkaFlume(消費(fèi)Kafka)FlumeHiveHiveMySQLMySQLSqoopSqoopPrestoWorkerCoordinatorWorker3用戶行為數(shù)據(jù)采集3.1數(shù)據(jù)生成模塊3.1.1埋點(diǎn)數(shù)據(jù)基本格式公共字段:基本包括所有安卓手機(jī)都具有的字段。業(yè)務(wù)字段:埋點(diǎn)上報(bào)的字段,有具體的業(yè)務(wù)類型。下面就是一個示例,表示業(yè)務(wù)字段的上傳。{"ap":"xxxxx",//項(xiàng)目數(shù)據(jù)來源apppc"cm":{//公共字段 "mid":"",//(String)設(shè)備唯一標(biāo)識"uid":"",//(String)用戶標(biāo)識"vc":"1",//(String)versionCode,程序版本號"vn":"1.0",//(String)versionName,程序版本名"l":"zh",//(String)系統(tǒng)語言"sr":"",//(String)渠道號,應(yīng)用從哪個渠道來的。"os":"7.1.1",//(String)Android系統(tǒng)版本"ar":"CN",//(String)區(qū)域"md":"BBB100-1",//(String)手機(jī)型號"ba":"blackberry",//(String)手機(jī)品牌"sv":"V2.2.1",//(String)sdkVersion"g":"",//(String)gmail"hw":"1620x1080",//(String)heightXwidth,屏幕寬高"t":"1506047606608",//(String)客戶端日志產(chǎn)生時(shí)的時(shí)間"nw":"WIFI",//(String)網(wǎng)絡(luò)模式"ln":0,//(double)lng經(jīng)度"la":0//(double)lat緯度},"et":[//事件{"ett":"1506047605364",//客戶端事件產(chǎn)生時(shí)間"en":"display",//事件名稱"kv":{//事件結(jié)果,以key-value形式自行定義"goodsid":"236","action":"1","extend1":"1","place":"2","category":"75"}}]}下面是各個埋點(diǎn)日志格式。其中商品點(diǎn)擊屬于信息流的范疇。3.1.2事件日志數(shù)據(jù)表3-1商品列表頁標(biāo)簽含義action動作:開始加載=1,加載成功=2,加載失敗=3loading_time加載時(shí)長:計(jì)算下拉開始到接口返回?cái)?shù)據(jù)的時(shí)間,(開始加載報(bào)0,加載成功或加載失敗才上報(bào)時(shí)間)loading_way加載類型:1-讀取緩存,2-從接口抽取新數(shù)據(jù)(加載成功才上報(bào)加載類型)extend1擴(kuò)展字段Extend1extend2擴(kuò)展字段Extend2type加載類型:自動加載=1,用戶下拽加載=2,底部加載=3(底部條觸發(fā)點(diǎn)擊底部提示條/點(diǎn)擊返回頂部加載)type1加載失敗碼:把加載失敗狀態(tài)碼報(bào)回來(報(bào)空為加載成功,沒有失?。┍?-2商品點(diǎn)擊標(biāo)簽含義action動作:曝光商品=1,點(diǎn)擊商品=2goodsid商品ID(服務(wù)端下發(fā)的ID)place順序(第幾條商品,第一條為0,第二條為1,如此類推)extend1曝光類型:1-首次曝光2-重復(fù)曝光category分類ID(服務(wù)端定義的分類ID)表3-3商品詳情頁標(biāo)簽含義entry頁面入口來源:應(yīng)用首頁=1、push=2、詳情頁相關(guān)推薦=3action動作:開始加載=1,加載成功=2(pv),加載失敗=3,退出頁面=4goodsid商品ID(服務(wù)端下發(fā)的ID)show_style商品樣式:0、無圖、1、一張大圖、2、兩張圖、3、三張小圖、4、一張小圖、5、一張大圖兩張小圖news_staytime頁面停留時(shí)長:從商品開始加載時(shí)開始計(jì)算,到用戶關(guān)閉頁面所用的時(shí)間。若中途用跳轉(zhuǎn)到其它頁面了,則暫停計(jì)時(shí),待回到詳情頁時(shí)恢復(fù)計(jì)時(shí)?;蛑型緞澇龅臅r(shí)間超過10分鐘,則本次計(jì)時(shí)作廢,不上報(bào)本次數(shù)據(jù)。如未加載成功退出,則報(bào)空。loading_time加載時(shí)長:計(jì)算頁面開始加載到接口返回?cái)?shù)據(jù)的時(shí)間(開始加載報(bào)0,加載成功或加載失敗才上報(bào)時(shí)間)type1加載失敗碼:把加載失敗狀態(tài)碼報(bào)回來(報(bào)空為加載成功,沒有失?。ヽategory分類ID(服務(wù)端定義的分類ID)表3-4廣告標(biāo)簽含義entry入口:商品列表頁=1

應(yīng)用首頁=2

商品詳情頁=3action動作:請求廣告=1取緩存廣告=2

廣告位展示=3廣告展示=4廣告點(diǎn)擊=5

content狀態(tài):成功=1

失敗=2

detail失敗碼(沒有則上報(bào)空)source廣告來源:admob=1facebook=2

ADX(百度)=3VK(俄羅斯)=4behavior用戶行為:

主動獲取廣告=1

被動獲取廣告=2newstypeType:1-圖文2-圖集3-段子4-GIF5-視頻6-調(diào)查7-純文8-視頻+圖文

9-GIF+圖文

0-其他show_style內(nèi)容樣式:無圖(純文字)=6一張大圖=1

三張小圖+文=4一張小圖=2一張大圖兩張小圖+文=3圖集+文=5

一張大圖+文=11

GIF大圖+文=12

視頻(大圖)+文=13

來源于詳情頁相關(guān)推薦的商品,上報(bào)樣式都為0(因?yàn)槎际亲笪挠覉D)表3-5消息通知標(biāo)簽含義action動作:通知產(chǎn)生=1,通知彈出=2,通知點(diǎn)擊=3,常駐通知展示(不重復(fù)上報(bào),一天之內(nèi)只報(bào)一次)=4type通知id:預(yù)警通知=1,天氣預(yù)報(bào)(早=2,晚=3),常駐=4ap_time客戶端彈出時(shí)間content備用字段表3-6用戶前臺活躍標(biāo)簽含義push_id推送的消息的id,如果不是從推送消息打開,傳空access1.push2.icon3.其他表3-7用戶后臺活躍標(biāo)簽含義active_source1=upgrade,2=download(下載),3=plugin_upgrade表3-8評論表序號字段名稱字段描述字段類型長度允許空缺省值1comment_id評論表int10.02user_id用戶idint10.0√03p_comment_id父級評論id(為0則是一級評論,不為0,則是回復(fù))int10.0√4content評論內(nèi)容string1000√5other_id創(chuàng)建時(shí)間string√6other_id評論的相關(guān)idint10.0√7praise_count點(diǎn)贊數(shù)量int10.0√08reply_count回復(fù)數(shù)量int10.0√0表3-9收藏序號字段名稱字段描述字段類型長度允許空缺省值1id主鍵int10.02course_id商品idint10.0√03userid用戶idint10.0√04add_time創(chuàng)建時(shí)間string√表3-10點(diǎn)贊表序號字段名稱字段描述字段類型長度允許空缺省值1id主鍵idint10.02userid用戶idint10.0√3target_id點(diǎn)贊的對象idint10.0√4type點(diǎn)贊類型1問答點(diǎn)贊2問答評論點(diǎn)贊3文章點(diǎn)贊數(shù)4評論點(diǎn)贊int10.0√5add_time添加時(shí)間string√表3-11錯誤日志表errorBrief錯誤摘要errorDetail錯誤詳情3.1.3啟動日志數(shù)據(jù)表3-12啟動日志表標(biāo)簽含義entry入口:push=1,widget=2,icon=3,notification=4,lockscreen_widget=5open_ad_type開屏廣告類型:開屏原生廣告=1,開屏插屏廣告=2action狀態(tài):成功=1

失敗=2loading_time加載時(shí)長:計(jì)算下拉開始到接口返回?cái)?shù)據(jù)的時(shí)間,(開始加載報(bào)0,加載成功或加載失敗才上報(bào)時(shí)間)detail失敗碼(沒有則上報(bào)空)extend1失敗的message(沒有則上報(bào)空)en日志類型start3.1.4數(shù)據(jù)生成腳本圖3-1數(shù)據(jù)流程之?dāng)?shù)據(jù)生成創(chuàng)建Maven工程(1)創(chuàng)建log-collector;圖3-2創(chuàng)建工程(2)創(chuàng)建一個包名:ject.hyc.appclient;(3)在ject.hyc.appclient.appclient包下創(chuàng)建一個類,AppMain;(4)在ject.hyc.appclient.bean包下創(chuàng)建如下圖所示bean對象。圖3-3項(xiàng)目主要類結(jié)構(gòu)打包(1)采用Maven對程序打包圖3-4項(xiàng)目打包(2)采用帶依賴的jar包。包含了程序運(yùn)行需要的所有依賴。圖3-5獲取項(xiàng)目jar包啟動啟動前必須先把Hadoop和Zookeeper集群搭建完成。(1)代碼參數(shù)說明//參數(shù)一:控制發(fā)送每條的延時(shí)時(shí)間,默認(rèn)是0Longdelay=args.length>0?Long.parseLong(args[0]):0L;//參數(shù)二:循環(huán)遍歷次數(shù)intloop_len=args.length>1?Integer.parseInt(args[1]):1000;(2)將生成的jar包logcollector-0.0.1-SNAPSHOT-jar-with-dependencies.jar拷貝到hadoop102服務(wù)器上,并同步到hadoop101的/opt/module路徑下,(3)在hadoop102上執(zhí)行jar程序(4)在/tmp/logs路徑下查看生成的日志文件日志生成集群啟動腳本具體腳本編寫 在/home/hyc/bin目錄下創(chuàng)建腳本lg.sh[hyc@hadoop102bin]$vimlg.sh 在腳本中編寫如下內(nèi)容#!/bin/bash foriinhadoop101hadoop102 do ssh$i"java-classpath/opt/module/logcollector-1.0-SNAPSHOT-jar-with-dependencies.jarject.hyc.appclient.AppMain>/opt/module/test.log&" done群時(shí)間同步修改腳本(1)在/home/hyc/bin目錄下創(chuàng)建腳本dt.sh[hyc@hadoop102bin]$vimdt.sh(2)在腳本中編寫如下內(nèi)容#!/bin/bashlog_date=$1foriinhadoop101hadoop102hadoop103dossh-t$i"sudodate-s$log_date"done集群所有進(jìn)程查看腳本(1)在/home/hyc/bin目錄下創(chuàng)建腳本xcall.sh[hyc@hadoop102bin]$vimxcall.sh(2)在腳本中編寫如下內(nèi)容#!/bin/bashforiinhadoop101hadoop102hadoop103doecho$issh$i"$*"done3.2數(shù)據(jù)采集模塊3.2.1Hadoop安裝表3-13Hadoop集群規(guī)劃服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103HDFSNameNodeDataNodeDataNodeDataNodeSecondaryNameNodeYarnNodeManagerResourcemanagerNodeManagerNodeManager添加LZO支持包(1)將編譯好后的hadoop-lzo-0.4.20.jar放入hadoop-2.7.2/share/hadoop/common/(2)同步hadoop-lzo-0.4.20.jar到hadoop101、hadoop10添加配置(1)core-site.xml增加配置支持LZO壓縮(2)同步core-site.xml到hadoop101、hadoop1033.2.2Zookeeper安裝表3-14zookeeper集群規(guī)劃服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103ZookeeperZookeeperZookeeperZookeeper3.2.3采集日志Flume圖3-6數(shù)據(jù)流程之?dāng)?shù)據(jù)采集flume日志采集Flume安裝表3-15采集flume集群規(guī)劃:服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103Flume(采集日志)FlumeFlume日志采集Flume配置(1)Flume配置分析圖3-7flume組件TailDirSource是Flume1.7提供的Source組件,在1.6中并沒有。采用KafkaChannel,省去了Sink。Flume直接讀log日志的數(shù)據(jù),log日志的格式是app-yyyy-mm-dd.log。(2)Flume的具體配置如下:在/opt/module/flume/conf目錄下創(chuàng)建file-flume-kafka.conf文件,在文件配置如下內(nèi)容:a1.sources=r1a1.channels=c1c2#configuresourcea1.sources.r1.type=TAILDIRa1.sources.r1.positionFile=/opt/module/flume/test/log_position.jsona1.sources.r1.filegroups=f1a1.sources.r1.filegroups.f1=/tmp/logs/app.+a1.sources.r1.fileHeader=truea1.sources.r1.channels=c1c2#erceptors=i1erceptors.i1.type=erceptor.LogETLInterceptor$Berceptors.i2.type=erceptor.LogTypeInterceptor$Buildera1.sources.r1.selector.type=multiplexinga1.sources.r1.selector.header=topica1.sources.r1.selector.mapping.topic_start=c1a1.sources.r1.selector.mapping.topic_event=c2#configurechannela1.channels.c1.type=org.apache.flume.channel.kafka.KafkaChannela1.channels.c1.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:9092a1.channels.c1.kafka.topic=topic_starta1.channels.c1.parseAsFlumeEvent=falsea1.channels.c1.kafka.consumer.group.id=flume-consumera1.channels.c2.type=org.apache.flume.channel.kafka.KafkaChannela1.channels.c2.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:9092a1.channels.c2.kafka.topic=topic_eventa1.channels.c2.parseAsFlumeEvent=falsea1.channels.c2.kafka.consumer.group.id=flume-consumerFlume攔截器本項(xiàng)目中自定義了兩個攔截器,分別是:ETL攔截器、日志類型區(qū)分?jǐn)r截器。ETL攔截器主要用于,過濾時(shí)間戳不合法和Json數(shù)據(jù)不完整的日志。日志類型區(qū)分?jǐn)r截器主要用于,將啟動日志和事件日志區(qū)分開來,方便發(fā)往Kafka的不同Topic。(1)創(chuàng)建Maven工程flume-interceptor;(2)創(chuàng)建包名:erceptor;(3)創(chuàng)建ETL攔截器(LogETLInterceptor)、日志類型區(qū)分?jǐn)r截器(LogTypeInterceptor)、日志過濾工具類(LogUtils);圖3-8flume采集攔截器(4)打包;攔截器打包之后,只需要單獨(dú)包,不需要將依賴的包上傳。打包之后要放入Flume的lib文件夾下面。圖3-9獲取攔截器jar包(5)需要先將打好的包放入到hadoop102的/opt/module/flume/lib文件夾下面;(6)分發(fā)Flume到hadoop101、hadoop103。3.2.4Kafka安裝圖3-10數(shù)據(jù)流程之?dāng)?shù)據(jù)采集KafkaKafka集群安裝表3-16kafka集群規(guī)劃:服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103KafkaKafkaKafkaKafka創(chuàng)建KafkaTopic進(jìn)入到/opt/module/kafka/目錄下分別創(chuàng)建:啟動日志主題、事件日志主題。(1)創(chuàng)建啟動日志主題[hyc@hadoop102kafka]$bin/kafka-topics.sh--zookeeperhadoop101:2181,hadoop102:2181,hadoop103:2181--create--replication-factor1--partitions1--topictopic_start(2)創(chuàng)建事件日志主題[hyc@hadoop102kafka]$bin/kafka-topics.sh--zookeeperhadoop101:2181,hadoop102:2181,hadoop103:2181--create--replication-factor1--partitions1--topictopic_event3.2.5消費(fèi)Kafka數(shù)據(jù)Flume圖3-11數(shù)據(jù)流程之?dāng)?shù)據(jù)采集消費(fèi)Flume表3-17消費(fèi)flume集群規(guī)劃服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103Flume(消費(fèi)Kafka)Flume(1)Flume配置分析圖3-12Flume組件配置(2)Flume的具體配置如下:在hadoop103的/opt/module/flume/conf目錄下創(chuàng)建kafka-flume-hdfs.conf文件,在文件配置如下內(nèi)容。##組件a1.sources=r1r2a1.channels=c1c2a1.sinks=k1k2##source1a1.sources.r1.type=org.apache.flume.source.kafka.KafkaSourcea1.sources.r1.batchSize=5000a1.sources.r1.batchDurationMillis=2000a1.sources.r1.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:9092a1.sources.r1.kafka.topics=topic_start##source2a1.sources.r2.type=org.apache.flume.source.kafka.KafkaSourcea1.sources.r2.batchSize=5000a1.sources.r2.batchDurationMillis=2000a1.sources.r2.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:9092a1.sources.r2.kafka.topics=topic_event##channel1a1.channels.c1.type=filea1.channels.c1.checkpointDir=/opt/module/flume/checkpoint/behavior1a1.channels.c1.dataDirs=/opt/module/flume/data/behavior1/a1.channels.c1.maxFileSize=2146435071a1.channels.c1.capacity=1000000a1.channels.c1.keep-alive=6##channel2a1.channels.c2.type=filea1.channels.c2.checkpointDir=/opt/module/flume/checkpoint/behavior2a1.channels.c2.dataDirs=/opt/module/flume/data/behavior2/a1.channels.c2.maxFileSize=2146435071a1.channels.c2.capacity=1000000a1.channels.c2.keep-alive=6##sink1a1.sinks.k1.type=hdfsa1.sinks.k1.hdfs.path=/origin_data/hyc/log/topic_start/%Y-%m-%da1.sinks.k1.hdfs.filePrefix=logstart-a1.sinks.k1.hdfs.round=truea1.sinks.k1.hdfs.roundValue=10a1.sinks.k1.hdfs.roundUnit=second##sink2a1.sinks.k2.type=hdfsa1.sinks.k2.hdfs.path=/origin_data/hyc/log/topic_event/%Y-%m-%da1.sinks.k2.hdfs.filePrefix=logevent-a1.sinks.k2.hdfs.round=truea1.sinks.k2.hdfs.roundValue=10a1.sinks.k2.hdfs.roundUnit=second##不要產(chǎn)生大量小文件a1.sinks.k1.hdfs.rollInterval=10a1.sinks.k1.hdfs.rollSize=134217728a1.sinks.k1.hdfs.rollCount=0a1.sinks.k2.hdfs.rollInterval=10a1.sinks.k2.hdfs.rollSize=134217728a1.sinks.k2.hdfs.rollCount=0##控制輸出文件是原生文件。a1.sinks.k1.hdfs.fileType=CompressedStreama1.sinks.k2.hdfs.fileType=CompressedStreama1.sinks.k1.hdfs.codeC=lzopa1.sinks.k2.hdfs.codeC=lzop##拼裝a1.sources.r1.channels=c1a1.sinks.k1.channel=c1a1.sources.r2.channels=c2a1.sinks.k2.channel=c23.2.6數(shù)據(jù)生成(1)啟動集群;集群所有進(jìn)程:[hyc@hadoop102bin]$xcalljpshadoop1017768NameNode8009NodeManager8218Application7883DataNode8076QuorumPeerMain8717Jps8527Kafkahadoop10212161ResourceManager13265Jps13011Kafka11908DataNode12695Application12298NodeManager12538QuorumPeerMainhadoop1037616QuorumPeerMain7459NodeManager7893Kafka7365SecondaryNameNode7980Application7244DataNode8173Jps(2)更改集群時(shí)間;[hyc@hadoop102bin]$date.sh2019-02-102019年02月10日星期日00:00:00CSTConnectiontohadoop101closed.2019年02月10日星期日00:00:00CSTConnectiontohadoop102closed.2019年02月10日星期日00:00:00CSTConnectiontohadoop103closed.(3)生成2019-02-10的日志數(shù)據(jù);[hyc@hadoop102bin]$lg.sh(4)日志經(jīng)由flume-kafka-flume-hdfs,最終在hdfs上生成兩個日志文件,2019-02-10的啟動日志文件以及事件日志文件;圖3-13查看2-10事件日志文件圖3-14查看2-10啟動日志文件(5)繼續(xù)更改集群時(shí)間;[hyc@hadoop102bin]$date.sh2019-02-112019年02月11日星期一00:00:00CSTConnectiontohadoop101closed.2019年02月11日星期一00:00:00CSTConnectiontohadoop102closed.2019年02月11日星期一00:00:00CSTConnectiontohadoop103closed.(6)生成2019-02-11的日志數(shù)據(jù);[hyc@hadoop102bin]$lg.sh(7)日志經(jīng)由flume-kafka-flume-hdfs,最終在hdfs上生成兩個日志文件,2019-02-11的啟動日志文件以及事件日志文件。圖3-15查看2-11啟動日志文件圖3-16查看2-11事件日志文件4用戶行為數(shù)據(jù)倉庫4.1數(shù)倉分層概念為什么要分層:圖4-1Hive數(shù)倉分層4.1.2數(shù)倉分層圖4-2ods與dwd層表圖4-3dws層與ads層表4.2數(shù)倉搭建環(huán)境準(zhǔn)備圖4-4數(shù)據(jù)流程之Hive數(shù)倉搭建4.2.1Hive&MySQL安裝表4-1Hive&MySQL集群規(guī)劃:服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103MysqlMysqlHivehive4.2.2Hive運(yùn)行引擎TezTez是一個Hive的運(yùn)行引擎,性能優(yōu)于MR。為什么優(yōu)于MR呢?看下圖。圖4-5Tez圖解用Hive直接編寫MR程序,假設(shè)有四個有依賴關(guān)系的MR作業(yè),上圖中,綠色是ReduceTask,云狀表示寫屏蔽,需要將中間結(jié)果持久化寫到HDFS。Tez可以將多個有依賴的作業(yè)轉(zhuǎn)換為一個作業(yè),這樣只需寫一次HDFS,且中間節(jié)點(diǎn)較少,從而大大提升作業(yè)的計(jì)算性能。在Hive中配置Tez。(1)進(jìn)入到Hive的配置目錄:/opt/module/hive/conf;(2)在hive-env.sh文件中添加tez環(huán)境變量配置和依賴包環(huán)境變量配置;(3)在hive-site.xml文件中添加配置,更改hive計(jì)算引擎;(4)在Hive的/opt/module/hive/conf下面創(chuàng)建一個tez-site.xml文件,添加Tez的配置;(5)將/opt/module/tez-0.9.1上傳到HDFS的/tez路徑。4.3數(shù)倉搭建之ODS層圖4-6數(shù)據(jù)流程之hive數(shù)倉ods層4.3.1創(chuàng)建數(shù)據(jù)庫(1)創(chuàng)建hycmall數(shù)據(jù)庫;(2)使用hycmall數(shù)據(jù)庫。4.3.2ODS層原始數(shù)據(jù)層,存放原始數(shù)據(jù),直接加載原始日志、數(shù)據(jù),數(shù)據(jù)保持原貌不做處理。創(chuàng)建啟動日志表ods_start_log:(1)創(chuàng)建ods_start_log表;(2)向表中導(dǎo)入數(shù)據(jù);(3)查看表內(nèi)數(shù)據(jù)。圖4-7ods_start_log表數(shù)據(jù)創(chuàng)建事件日志表ods_event_log:(1)創(chuàng)建ods_start_log表;(2)向表中導(dǎo)入數(shù)據(jù);(3)查看表內(nèi)數(shù)據(jù)。圖4-8ods_event_log表數(shù)據(jù)4.4數(shù)倉搭建之DWD層對ODS層數(shù)據(jù)進(jìn)行清洗(去除空值,臟數(shù)據(jù),超過極限范圍的數(shù)據(jù),行式存儲改為列存儲,改壓縮格式)。4.4.1DWD層啟動表數(shù)據(jù)解析(1)創(chuàng)建啟動表dwd_start_log;(2)向啟動表導(dǎo)入數(shù)據(jù);(3)測試。圖4-9dwd_start_log表數(shù)據(jù)4.4.2DWD層事件表數(shù)據(jù)解析創(chuàng)建基礎(chǔ)明細(xì)表(1)明細(xì)表用于存儲ODS層原始表轉(zhuǎn)換過來的明細(xì)數(shù)據(jù);圖4-10dwd_base_event_log表結(jié)構(gòu)圖解(2)創(chuàng)建事件日志基礎(chǔ)明細(xì)表。圖4-11dwd_base_event_log建表語句自定義UDF函數(shù)(解析公共字段)(1)創(chuàng)建一個maven工程:hive-function;(2)創(chuàng)建包名:ject.hyc.udf。自定義UDTF函數(shù)(解析具體事件字段)(1)創(chuàng)建包名:ject.hyc.udtf;(2)在ject.hyc.udtf包下創(chuàng)建類名:EventJsonUDTF;圖4-12自定義函數(shù)類(3)打包;圖4-13獲取自定義函數(shù)jar包(4)將hive-function-1.0-SNAPSHOT上傳到hadoop102的/opt/module/hive/;(5)將jar包添加到Hive的classpath;(6)創(chuàng)建臨時(shí)函數(shù)與開發(fā)好的javaclass關(guān)聯(lián)。解析事件日志基礎(chǔ)明細(xì)表。解析事件日志基礎(chǔ)明細(xì)表,讀取事件日志明細(xì)表數(shù)據(jù)。圖4-14dwd_base_event_log表數(shù)據(jù)4.4.3DWD層事件表獲?。?)建表,在hive中創(chuàng)建用戶后臺活躍表、用戶前臺活躍表、廣告表、評論表、商品點(diǎn)擊表、錯誤日志表、收藏表、商品列表頁表、商品詳情頁表、消息通知表、點(diǎn)贊表等11張表。圖4-15dwd層表(2)給表中導(dǎo)入數(shù)據(jù),分別給不同的表導(dǎo)入響應(yīng)的日志數(shù)據(jù)。5系統(tǒng)業(yè)務(wù)數(shù)據(jù)倉庫5.1電商業(yè)務(wù)與數(shù)據(jù)結(jié)構(gòu)簡介5.1.1電商業(yè)務(wù)流程圖5-1電商業(yè)務(wù)流程5.1.2電商表結(jié)構(gòu)圖5-2電商表結(jié)構(gòu)表5-1訂單表標(biāo)簽含義id訂單編號total_amount訂單金額order_status訂單狀態(tài)user_id用戶idpayment_way支付方式out_trade_no支付流水號create_time創(chuàng)建時(shí)間operate_time操作時(shí)間表5-2訂單詳情表標(biāo)簽含義id訂單編號order_id訂單號user_id用戶idsku_id商品idsku_name商品名稱order_price商品價(jià)格sku_num商品數(shù)量create_time創(chuàng)建時(shí)間表5-3商品表標(biāo)簽含義idskuIdspu_idspuidprice價(jià)格sku_name商品名稱sku_desc商品描述weight重量tm_id品牌idcategory3_id品類idcreate_time創(chuàng)建時(shí)間表5-4用戶表標(biāo)簽含義id用戶idname姓名birthday生日gender性別email郵箱user_level用戶等級create_time創(chuàng)建時(shí)間表5-5商品一級分類表標(biāo)簽含義ididname名稱表5-6商品二級分類表標(biāo)簽含義ididname名稱category1_id一級品類id表5-7商品三級分類表標(biāo)簽含義ididname名稱Category2_id二級品類id表5-8支付流水表標(biāo)簽含義id編號out_trade_no對外業(yè)務(wù)編號order_id訂單編號user_id用戶編號alipay_trade_no支付寶交易流水編號total_amount支付金額subject交易內(nèi)容payment_type支付類型payment_time支付時(shí)間5.2數(shù)倉搭建5.2.1配置Hadoop支持Snappy壓縮(1)將編譯后支持Snappy壓縮的Hadoopjar包解壓縮,并將lib/native目錄中所有文件上傳到hadoop102的/opt/module/hadoop-2.7.2/lib/native目錄。(2)重新啟動Hadoop;(3)檢查支持的壓縮方式。圖5-3Hadoop支持snappy壓縮5.2.2業(yè)務(wù)數(shù)據(jù)生成建表語句(1)通過navicat創(chuàng)建數(shù)據(jù)庫hycmall;(2)設(shè)置數(shù)據(jù)庫編碼,設(shè)置為utf-8;(3)導(dǎo)入建表語句(1建表腳本);圖5-4導(dǎo)入建表腳本(4)重復(fù)步驟3的導(dǎo)入方式,依次導(dǎo)入:2商品分類數(shù)據(jù)插入腳本、3函數(shù)腳本、4存儲過程腳本。生成業(yè)務(wù)數(shù)據(jù)函數(shù)說明;init_data(do_date_stringVARCHAR(20),order_incr_numINT,user_incr_numINT,sku_numINT,if_truncateBOOLEAN):參數(shù)一:do_date_string生成數(shù)據(jù)日期參數(shù)二:order_incr_num訂單id個數(shù)參數(shù)三:user_incr_num用戶id個數(shù)參數(shù)四:sku_num商品sku個數(shù)參數(shù)五:if_truncate是否刪除數(shù)據(jù)5.2.3業(yè)務(wù)數(shù)據(jù)導(dǎo)入數(shù)倉圖5-5數(shù)據(jù)流程之mysql數(shù)據(jù)導(dǎo)入hdfsSqoop安裝表5-9sqoop集群規(guī)劃:服務(wù)器hadoop101服務(wù)器hadoop102服務(wù)器hadoop103SqoopsqoopSqoop定時(shí)導(dǎo)入腳本在/home/hyc/bin目錄下創(chuàng)建腳本sqoop_import.sh。在腳本中填寫如下內(nèi)容:#!/bin/bashdb_date=$2echo$db_datedb_name=hycmallimport_data(){/opt/module/sqoop/bin/sqoopimport\--connectjdbc:mysql://hadoop102:3306/$db_name\--usernameroot\--passwordroot\--target-dir/origin_data/$db_name/db/$1/$db_date\--delete-target-dir\--num-mappers1\--fields-terminated-by"\t"\--query"$2"'and$CONDITIONS;'}import_sku_info(){import_data"sku_info""selectid,spu_id,price,sku_name,sku_desc,weight,tm_id,category3_id,create_timefromsku_infowhere1=1"}import_user_info(){import_data"user_info""selectid,name,birthday,gender,email,user_level,create_timefromuser_infowhere1=1"}import_base_category1(){import_data"base_category1""selectid,namefrombase_category1where1=1"}import_base_category2(){import_data"base_category2""selectid,name,category1_idfrombase_category2where1=1"}import_base_category3(){import_data"base_category3""selectid,name,category2_idfrombase_category3where1=1"}import_order_detail(){import_data"order_detail""selectod.id,order_id,user_id,sku_id,sku_name,order_price,sku_num,o.create_timefromorder_infoo,order_detailodwhereo.id=od.order_idandDATE_FORMAT(create_time,'%Y-%m-%d')='$db_date'"}import_payment_info(){import_data"payment_info""selectid,out_trade_no,order_id,user_id,alipay_trade_no,total_amount,subject,payment_type,payment_timefrompayment_infowhereDATE_FORMAT(payment_time,'%Y-%m-%d')='$db_date'"}import_order_info(){import_data"order_info""selectid,total_amount,order_status,user_id,payment_way,out_trade_no,create_time,operate_timefromorder_infowhere(DATE_FORMAT(create_time,'%Y-%m-%d')='$db_date'orDATE_FORMAT(operate_time,'%Y-%m-%d')='$db_date')"}case$1in"all")import_base_category1import_base_category2import_base_category3import_order_infoimport_order_detailimport_sku_infoimport_user_infoimport_payment_info;;esac5.2.4ODS層完全仿照業(yè)務(wù)數(shù)據(jù)庫中的表字段,一模一樣的創(chuàng)建ODS層對應(yīng)表。(1)分別創(chuàng)建商品一級分類表、商品二級分類表、商品三級分類表、訂單詳情表、訂單表、支付流水表、商品表、用戶表。圖5-6ods層表(2)導(dǎo)入各個表的數(shù)據(jù)。5.2.5DWD層對ODS層數(shù)據(jù)進(jìn)行判空過濾。對商品分類表進(jìn)行維度退化(降維)。(1)分別創(chuàng)建訂單詳情表、訂單表、支付流水表、用戶表、商品表等。圖5-7dwd層表(2)導(dǎo)入數(shù)據(jù)并查看。5.2.6DWS層之用戶行為寬表為什么要建寬表需求目標(biāo),把每個用戶單日的行為聚合起來組成一張多列寬表,以便之后關(guān)聯(lián)用戶維度信息后進(jìn)行,不同角度的統(tǒng)計(jì)分析。(1)創(chuàng)建用戶行為寬表;圖5-8創(chuàng)建dws層用戶行為寬表(2)向用戶行為寬表導(dǎo)入數(shù)據(jù)導(dǎo)入數(shù)據(jù)并查看圖5-9dws_user_action表數(shù)據(jù)6業(yè)務(wù)需求數(shù)據(jù)分析6.1需求一:用戶活躍主題6.1.1DWS層目標(biāo):統(tǒng)計(jì)當(dāng)日、當(dāng)周、當(dāng)月活動的每個設(shè)備明細(xì)每日活躍設(shè)備明細(xì)(1)創(chuàng)建表dws_uv_detail_day;(2)將數(shù)據(jù)導(dǎo)入表中;以用戶單日訪問為key進(jìn)行聚合,如果某個用戶在一天中使用了兩種操作系統(tǒng)、兩個系統(tǒng)版本、多個地區(qū),登錄不同賬號,只取其中之一。(3)查詢導(dǎo)入結(jié)果。圖6-1dws_uv_detail_day表數(shù)據(jù)每周活躍設(shè)備明細(xì)。根據(jù)日用戶訪問明細(xì),獲得周用戶訪問明細(xì)。(1)創(chuàng)建表dws_uv_detail_wk;(2)數(shù)據(jù)導(dǎo)入表中;(3)查詢導(dǎo)入結(jié)果。圖6-2dws_uv_detail_wk表數(shù)據(jù)每月活躍設(shè)備明細(xì)。(1)創(chuàng)建表dws_uv_detail_mn;(2)將數(shù)據(jù)導(dǎo)入表中;(3)查詢導(dǎo)入結(jié)果。圖6-3dws_uv_detail_mn表數(shù)據(jù)6.1.2ADS層目標(biāo):當(dāng)日、當(dāng)周、當(dāng)月活躍設(shè)備數(shù)活躍設(shè)備數(shù)。(1)創(chuàng)建表ads_uv_count;(2)導(dǎo)入數(shù)據(jù);(3)使用presto查詢導(dǎo)入的數(shù)據(jù)。圖6-4ads_uv_count表數(shù)據(jù)(4)分析表中數(shù)據(jù)。表中第一個字段dt為數(shù)據(jù)的時(shí)間,day_count為當(dāng)日活躍設(shè)備數(shù),wk_count為本周活躍設(shè)備數(shù),mn_count為本月活躍設(shè)備數(shù),從該表中可以得知企業(yè)產(chǎn)品每日每周每月的活躍用戶數(shù),從而形成報(bào)表。6.2需求二:用戶新增主題首次聯(lián)網(wǎng)使用應(yīng)用的用戶。如果一個用戶首次打開某APP,那這個用戶定義為新增用戶;卸載再安裝的設(shè)備,不會被算作一次新增。新增用戶包括日新增用戶、周新增用戶、月新增用戶。6.2.1DWS層(每日新增設(shè)備明細(xì)表)(1)創(chuàng)建表dws_new_mid_day;(2)導(dǎo)入數(shù)據(jù);用每日活躍用戶表LeftJoin每日新增設(shè)備表,關(guān)聯(lián)的條件是mid_id相等。如果是每日新增的設(shè)備,則在每日新增設(shè)備表中為null。(3)查詢導(dǎo)入數(shù)據(jù)。圖6-5dws_new_mid_day表數(shù)據(jù)6.2.2ADS層(每日新增設(shè)備表)(1)創(chuàng)建表ads_new_mid_count;(2)導(dǎo)入數(shù)據(jù);(3)用presto查看導(dǎo)入數(shù)據(jù);圖6-6ads_new_mid_count表數(shù)據(jù)(4)分析表中數(shù)據(jù)。表中第一個字段create_time為數(shù)據(jù)時(shí)間,new_mid_count為新增用戶數(shù),該表可以得知企業(yè)產(chǎn)品app每天新增用戶數(shù),從而可以得到app總的走勢,給企業(yè)決策層提供指導(dǎo)意見。6.3需求三:GMV成交總額ADS層(1)什么是GMVGMV:GrossMerchandiseVolume,是一定時(shí)間段內(nèi)的成交總額(比如一天、一個月、一年)。在電商網(wǎng)站定義里面是網(wǎng)站成交金額,這個實(shí)際指的是拍下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論