尚硅谷大数据项目之电商数仓用户行为数_第1页
尚硅谷大数据项目之电商数仓用户行为数_第2页
尚硅谷大数据项目之电商数仓用户行为数_第3页
尚硅谷大数据项目之电商数仓用户行为数_第4页
尚硅谷大数据项目之电商数仓用户行为数_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

尚硅谷大数据项目之电商数仓(用户行为数

据采集)

第1章数据仓库概念

沙数据仓库概念M尚硅谷

数据仓库(DataWarehouse),

是为企业所有决策制定过程,提供所

有系统数据支持的战略集合。

通过对数据仓库中数据的分析,

可以帮助企业,改进业务流程、捽制

成木、提高产品质量等。

数据仓库,并不是数据的最终目

的地,而是为数据最终的目的地做好

准备。这些准备包括对数据的:清洗,

转义,分类,重组,合并,拆分,统

计等等。

报表系统用户画像推荐系统机器学习风控系统

第2章项目需求及架构设计

2.1项目需求分析

步项目需求电尚硅谷

一、项目需求

>1、用户行为数据采集平台搭建

>2、业务数据采集平台搭建

>3、数据仓库维度建模

>4、分析,用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近

100个。完全对比中型公司。

>5、采用即席查询工具,随时进行指标分析

>6、对集群性能进行监控,发生异常需要报警。

>7、元数据管理

>8、质量监控

二、思考题

>1、项目技术如何选型?

>2、框架版本如何选型(Apache、CDH、HDP)

>3、服务器使用物理机还是云主机?

>4、如何确认集群规模?(假设每台服务器8T硬盘)

2.2项目框架

2.2.1技术选型

沙技术选型⑼茴硅谷

技术选型主要考虑因素:数据显大小、业务需求、行业内经验、技术成熟度、开发

维护成本、总成本预算

>数据采集传输:Flume,Kafka,Sqoop,Logstash,DataX,

>数据存储:MySql,HDFS,HBase,Redis,MongoDB

>数据计算:Hive,Tez,Spark,Flink,Storm

>数据查询:Presto,Druid,Impala,Kylin

>数据可视化:Echarts>Superset^QuickBRDataV

>任务调度:AzkabanAOozie

>集群监控:Zabbix

>元数据管理:Atlas

>数据质量监控:Griffin

2.2.2系统数据流程设计

沙系统数据潮呈设计⑼商硅谷

业务服务器业务交互数据:业务流程中产生的登录、订单、用户、

Web/业务日志数据(后端埋点数据)商品、支付等相关的数据,通常存储在DB中,包括

App(Springboot)

业务

业务服务器

交互MySQL业务数据

(Springboot)Druid

AtlasKylin

埋点

用户日志服务器Presto

行为►logFile一►Kafka

(Speingboot)FlumeHive

(ods

消费dwd

KafkaaHDFSaMysql

Flumedws

dwt

日志服务器A生产ads)

alogFile►Kafka

(Springboot)Flume

数据可

实时指标分析视化

埋点用户行为数据:用户在使用产品过程中,与客户端产品交互Echart、

SparkSt

HbaseSuperset

过程中产生的数据,比如页面浏览、点击、停留、评论、点赞、reaming

收藏等

GriffinZabbix

2.2.3框架版本选型

夕框架版本选型◎而硅谷

1)如何选择Apache/CDH/HDP版本?

(1)Apache:运维麻烦,组件间兼容性需要自己调研。(一般大厂使用,技

术实力雄厚,有专业的运维人员)(建议使用)

(2)CDH:国内使用最多的版本,但CM不开源,今年开始要收费,一个节

点1万美金。

(3)HDP:开源,可以进行二次开发,但是没有CDH稳定,国内使用较少

沙具体版本型号⑼而硅谷

(1)Apache框架版本

|2.7.2

Flume|1.7.0

Kafkaj

■______|2.3

Sqoop|1.4.6

MySck|5.6.24

Azkaban|2.5.0

Java|1.8

Zookeeper|3.4.10、…一”…a—

Presto|0.189汪息学•孙:也朱磔里杰窜个头

选择最新的框架,选择最新框

(2)CDH框架版本:5.12.1架半年前左右的稳定版。

2.6.0

1.6.0

1.6.0

1.1.0

1.4.6

4.1.0

Zookeeper]3.4.5

Impala]2.9.0

2.2.4服务器选型

夕服务器选型◎尚硅谷

服务器选择物理机还是云主机?

1)物理机:

A以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌

单台报价4W出头。一般物理机寿命5年左右。

>需要有专业的运维人员,平均一个月1万。电费也是不少的开销。

2)云主机:

>云主机:以阿里云为例,差不多相同配置,每年5W。

>很多运维工作都由阿里云完成,运维相对较轻松

3)企业选择

A金融有钱公司和阿里没有直接冲突的公司选择阿里云

>中小公司、为了融资上市,选择阿里云,拉倒融资后买物理机。

>有长期打算,资金比较足,选择物理机。

2.2.5集群资源规划设计

夕集群规模◎尚硅谷

1)如何确认集群规模?(假设:每台服务器8T磁盘,128G内存)

(1)每天日活跃用户100万,每人一天平均100条:100万*100条=1亿条

(2)每条日志1K左右,每天1亿条:100000000/1024/1024=约1006

(3)半年内不扩容服务器来算:1000*180天=约18T

(4)保存3副本:18T*3=54T

(5)预留20%~30%Buf=54T/0.7=77T

(6)算到这:约81*10台服务器

2)如果考虑数仓分层?数据采用压缩?需要重新再计算

2)测试集群服务器规划

服务名称子服务服务器服务器服务器

hadoopl02hadoopl03hadoopl04

HDFSNameNodeV

DataNodeVVV

SecondaryNameNodeV

YarnNodeManagerVVV

ResourcemanagerV

ZookeeperZookeeperServerVVV

Flume(采集日志)FlumeVV

KafkaKafkaVVV

Flume(消费FlumeV

Kafka)

HiveHiveV

MySQLMySQLV

SqoopSqoopV

PrestoCoordinatorV

WorkerVV

AzkabanAzkabanWebServerV

AzkabanExecutorServerV

DruidDruidVVV

KylinV

HbaseHMasterV

HRegionServerVVV

SupersetV

AtlasV

SolrJarV

GriffinV

服务数总计1999

第3章数据生成模块

3.1埋点数据基本格式

•公共字段:基本所有安卓手机都包含的字段

•业务字段:埋点上报的字段,有具体的业务类型

下面就是一个示例,表示业务字段的上传。

(

"ap":"xxxxx”,项目数据来源apppc

“cm”:{公共字段

"mid":(String)设备唯一标识

"uid":(String)用户标识

"vc":"1",(String)versionCode,程序版本号

"vn":"1.0",(String)versionName,程序版本名

"I":"zh",(String)language系统语言

"sr":(String)渠道号,应用从哪个渠道来的。

"os":"7.1.1",(String)Android系统版本

"ar":"CN",(String)area区域

"md":"BBB100-1",(String)model手机型号

"ba":"blackberry",(String)brand钠品牌

"sv":"V2.2.1",(String)sdkVersion

"g":(String)gmail

"hw":"1620x1080",(String)heightXwidth,屏幕宽高

"tn:"1506047606608",(String)客户端日志产生时的时间

"nw":"WIFI",(String)网络模式

"In":0,(double)Ing经度

"la":0(double)lat纬度

},

"et":[事件

(

"ett":"1506047605364",客户端事件产生时间

"en":"display",事件名称

“kv”:{事件结果,以key-value形式自行定义

"goodsid":"236",

"action":"1",

"extendi":"1",

"place":"2",

"category":"75"

)

)

]

)

示例日志(服务器时间戳I日志):

1540934156385]{

"ap":"gmall",

"cm":{

"uid":"1234",

"vc":"2",

"vn":"1.0",

"la":"EN",

"sr":

"os":"7.1.1",

"ar":nCN",

"md":"BBB100-1",

"ba":"blackberry",

"sv":"V2,2.1",

"g":"abcgmail",

"hw":"1620x1080",

"t":"1506047606608",

"nw":"WIFI",

"In":0

),

"et":[

"ett":"1506047605364",客户端事件产生时间

"en":"display",事件名称

"kv":{事件结果,以key-value形式自行定义

"goodsid":"236",

"action":"1",

"extendi":"1",

"place":"2",

"category":"75"

)

),(

"ett":"1552352626835",

"en":"active_background",

"kv":{

"active_source":"1"

)

)

]

)

)

下面是各个埋点日志格式。其中商品点击属于信息流的范畴

3.2事件日志数据

3.2.1商品列表页(loading)

事件名称:loading

标签含义

action动作:开始加载=1,加载成功=2,加载失败=3

loading_time加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成

功或加载失败才上报时间)

loading_way加载类型:1-读取缓存,2-从接口拉新数据

(加载成功才上报加载类型)

extendi扩展字段Extendi

extend2扩展字段Extend2

type加载类型:自动加载=1,用户下拽加载=2,底部加载=3(底部条触发点击

底部提示条/点击返回顶部加载)

typel加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

中国移动BITi上年10:49

综合•销量价格:筛选Y

京东物流品牌•主要成分・国产/进口・

同仁堂人参鹿茸丸9g*io丸补

肾治肾虚益气补血

*380.00¥348.0003

国&29万十条评价98%好评

:工二【5万好评送玛鼠1】亨博

士海狗人参丸男性保健品可搭…

¥78.00I濡200X301IB一免那G3

施®52829条评价95%好评

修正海狗人参丸(非万艾可一粒

硬装延时增大增租增长韦哥金…

*98.00V92.00VH0

标而旗丽16944条评价书

CH33奢兰海狗人参丸140粒海

狗丸男性保健品可搭玛咖玛卡.

3.2.2商品点击(display)

事件标签:display

标签含义

action动作:曝光商品=1,点击商品=2,

goodsid商品ID(服务端下发的ID)

place顺序(第几条商品,第一条为0,第二条为1,如此类推)

extendi曝光类型:1-首次曝光2-重复曝光

category分类ID(服务端定义的分类ID)

中国移动4Gm匕di・BBD上午10:49

海拘人参丸x*§g

综合,销量价格;筛选

京东物流品牌,主要成分,国产/进口,

同仁堂人参鹿茸丸9g*10丸补

肾治肾虚益气补血

¥380.00Y348.00HES

国⑪29万+条评价98%好评

CE®【5万好评送玛舞】亨博

士海狗人参丸男性保健品可搭…

¥78.00吊200匕301苍/兔叫Q

做心曲52829条评价95%好评

修正海狗人参丸(非万艾可一粒

硬装延时增大增粗熠长韦哥金…

¥98.00X92.001D□

1^5a]簸算16944条评价;灯

—奢兰海狗人参丸140粒海

狗丸男性保健品可搭玛咖玛卡…

3.2.3商品详情页(newsdetail)

事件标签:newsdetail

标签含义

entry页面入口来源:应用首页=1、push=2.详情页相关推荐=3

action动作:开始加载=1,加载成功=2(pv),加载失败=3,退出页面=4

goodsid商品ID(服务端下发的ID)

show_style商品样式:0、无图、L一张大图、2、两张图、3、三张小图、4、一张小图、

5、一张大图两张小图

news_staytime页面停留时长:从商品开始加载时开始计算,到用户关闭页面所用的时间。

若中途用颔姬到其它页面了,则暂停计时,待回到详情页时恢复计时。或中

途划出的时间超过10分钟,则本次计时作废,不上报本次数据。如未加载成

功退出,则报空。

loading_time加载时长:计算页面开始加载到接口返回数据的时间(开始加载报0,加载

成功或加载失败才上报时间)

typel加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

category分类ID(服务端定义的分类ID)

出上午1(X50

<商品详情评价Kja

[5万好评京玛nlg博士海狗人莽丸男住保。

僮晶西舞男用玛卡牡坞片濯羊茶非金旗间结丸;.

元宵大促登场福200*30元/时2月1519号迈入大促会场

iOfi

¥78.00丽通知

加入羽物主

«AW«35k

3.2.4广告(ad)

事件名称:ad

标签含义

entry入口:商品列表页=1应用首页=2商品详情页=3

action动作:广告展示=1广告点击=2

contentTypeType:1商品2营销活动

displayMills展示时长毫秒数

itemld商品id

activityld营销活动id

中国移动4G。,・比•/中午12:48

-宋小宝小品全集।岳云鹏盘清音频…

发杓

关渣推荐北京视频新时代国£=

【领航新时代】贵州:生态美百姓富乘势

而上谱新篇

SD央视网新闻557评的刚刚

合法直销还是“经济邪教”?

巨头安利230亿业绩背后的

数千万直销“难民”

生啤、熟啤、原浆、纯生、干啤、冰啤、扎

啤有什咨80?________

•0⑥乂

KA小债,我的

3.2.5消息通知(notification)

事彳牛标签:notification

标签含义

动作:通知产生=1,通知弹出=2,通知点击=3,常驻通知展示(不重复上

action

报,一天之内只报一次)=4

type通知id:预警通知=1,天气预报(早=2,晚=3),常驻=4

ap.time客户端弹出时间

content备用字段

3.2.6用户后台活跃(active_background)

事件标签:active_background

标签含义

active_sourcel=upgrade,2二download(下载),3二plugin_upgrade

3.2.7评论(comment)

描述:评论表

序号字段名称字段描述字段类型长度允许空缺省值

1commentjd评论表int10,0

2userid用户idint10,0V0

父级评论id(为0则是一级评论,

3p_comment_idint10,0V

不为0则是回复)

4content评论内容string1000V

5addtime创建时间stringV

6otherjd评论的相关idint10,0V

7praise_count点赞数量int10,0V0

8reply_count回复数量int10,0V0

中国移动出0・3清晨6:46

评价晒单提交

商品评分

★****

照片/视频

,匿名评价

EJ物流服务评价满意请给5星哦

快递包装

送货速度

配送员服务

3.2.8收藏(favorites)

描述:收藏

序号字段名称字段描述字段类型长度允许空缺省值

1id主键int10,0

2coursejd商品idint10z0V0

3userid用户IDint10,0V0

4add_time创建时间stringV

3.2.9点赞(praise)

描述:所有的点赞表

序号字段名称字段描述字段类型长度允许空缺省值

1id主键idint10,0

2userid用户idint10,0V

3target_id点赞的对象idint10,0V

点赞类型1问答点赞2问答评论

4typeint10,0V

点赞3文章点赞数4评论点赞

5addjime添加时间stringV

中国移动4GOS”"HQ。出®■。消展6:48

<商品详情评价匕・・9

,只看当前商品好评度100%

I•全部42好砰42醉正绵滑1价格给力1

品牌伍颖1

]***匙修向缗

*****

和过后再来追评

色。口。

布善EF国。

«!►*****

总体感觉还不错。物美价廉的!京东自营店还是

不错的

色oDo

好酒

加入购物车

m1,'"

3.2.10错误日志

errorBrief错误摘要

errorDetail错误详情

3.3启动日志数据

事件标签:start

标签含义

入口:push=l,widget=2,icon=3,notification=4,lockscreen_widget

entry

=5

open_ad_type开屏广告类型:开屏原生广告=L开屏插屏广告=2

action状态:成功=1失败=2

loading_time加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成

功或加载失败才上报时间)

detail失败码(没有则上报空)

extendi失败的message(没有则上报空)

en日志类型start

"action":";

"ar":"MX",

nba":"HTC",

"detail":"",

Ben":"start",

”entry":"2",

"extendi":"",

"g":"43R2SEQXgmail",

"hw":"640*960",

"P/en",

"la":"20.4",

"ln":"-99.3",

"loading_time":"2",

"md":"HTC-2",

"mid":"995",

"nw":"4G",

"open_ad_type":"2",

"os":"8.1.2",

"sv":"V2.0.6",

"t":"1561472502444",

"uid":"995",

"vc":"10n,

"vnn:"1.3.4"

)

3.4数据生成脚本

夕用户行为数据生成。尚硅谷

3.4.1创建Maven工程

1)仓!]建log-collector

2)创建—个包名:com.atguigu.appclient

)在包下仓!]建一^类,

3com.atguigu.appclientAppMaine

4)在pom.xml文件中添加如下内容

<!--版本号统—―>

<properties>

<slf4j.version>1.7.20</slf4j.version>

<logback.version>1.0.7</logback.version>

</properties>

<dependencies>

<!--阿里巴巴开源json解析框架

<dependency>

<groupld>com.alibaba</groupld>

<artifactld>fastjson</artifactld>

<version>1.2.51</version>

</dependency>

<!--日志生成框架

<dependency>

<groupld>ch.qos.logback</groupld>

<artifactld>logback-core</artifactId>

<version>${logback.version}</version>

</dependency>

<dependency>

<groupld>ch.qos.logback</groupld>

<artifactld>logback-classic</artifactId>

<version>${logback.version}</version>

</dependency>

</dependencies>

<!--编译打包插件

<build>

<plugins>

<plugin>

<artifactld>maven-compiler-plugin</artifactId>

<version>2.3.2</version>

<configuration>

<source>1.8</source>

<target>1.8</target>

</configuration>

</plugin>

<plugin>

<artifactld>maven-assembly-plugin</artifactId>

<configuration>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

<archive>

<manifest>

<mainClass>com.atguigu.appclient.AppMain</mainClass>

</manifest>

</archive>

</configuration>

<executions>

<execution>

<id>make-assembly</id>

<phase>package</phase>

<goals>

<goal>single</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

注意:com.atguigu.appcIient.AppMain要和自己建的全类名一致。

3.4.2公共字段Bean

1)创建包名:com.atguigu.bean

2)在com.atguigu.bean包下依次创建如下bean对象

packagecom.atguigu.bean;

/**

*公共日志

*/

publicclassAppBasef

privateStringmid;(String)设备唯一标识

privateStringuid;(String)用户uid

privateStringvc;(String)versionCode,程序版本号

privateStringvn;(String)versionName,程序版本名

privateString1;(String)系统语言

privateStringsr;(String)渠道号,应用从哪个渠道来的。

privateStringos;(String)Android系统版本

privateStringar;(String)区域

privateStringmd;(String)手机型号

privateStringba;(String)手机品牌

privateStringsv;(String)sdkVersion

privateStringg;(String)gmail

privateStringhw;(String)heightXwidth,屏幕宽高

privateStringt;(String)客户端日志产生时的时间

privateStringnw;(String)网络模式

privateStringIn;(double)Ing

privateStringla;(double)/at纬度

publicStringgetMid(){

returnmid;

)

publicvoidsetMid(Stringmid){

this.mid=mid;

)

publicStringgetUidQ{

returnuid;

)

publicvoidsetUid(Stringuid){

this.uid=uid;

)

publicStringgetVc(){

returnvc;

)

publicvoidsetVc(Stringvc){

this,vc=vc;

)

publicStringgetVn(){

returnvn;

)

publicvoidsetVn(Stringvn){

this.vn=vn;

)

publicStringgetL(){

returnI;

)

publicvoidsetL(StringI){

this.l=I;

)

publicStringgetSrQ{

returnsr;

)

publicvoidsetSr(Stringsr){

this.sr=sr;

)

publicStringgetOs(){

returnos;

)

publicvoidsetOs(Stringos){

this.os=os;

)

publicStringgetArQ{

returnar;

)

publicvoidsetAr(Stringar){

this.ar=ar;

)

publicStringgetMd(){

returnmd;

)

publicvoidsetMd(Stringmd){

this.md=md;

)

publicStringgetBa(){

returnba;

)

publicvoidsetBa(Stringba){

this.ba=ba;

)

publicStringgetSvO{

returnsv;

)

publicvoidsetSv(Stringsv){

this.sv=sv;

)

publicStringgetG(){

returng;

)

publicvoidsetG(Stringg){

this.g=g;

)

publicStringgetHw(){

returnhw;

)

publicvoidsetHw(Stringhw){

this.hw=hw;

)

publicStringgetT(){

returnt;

)

publicvoidsetT(Stringt){

this.t=t;

)

publicStringgetNw(){

returnnw;

)

publicvoidsetNw(Stringnw){

this.nw=nw;

)

publicStringgetLn(){

returnIn;

)

publicvoidsetLn(StringIn){

this.ln=In;

)

publicStringgetLa(){

returnla;

)

publicvoidsetLa(Stringla){

this.la=la;

}

)

3.4.3启动日志Bean

packagecom.atguigu.bean;

*启动日志

*/

publicclassAppStartextendsAppBase{

privateStringentry;人47:push=l,widget=2,icon=3,notification=4,!ockscreen_widget=5

privateStringopenadjyp.开屏广告类型:开屏原廿告=L开屏插屏广告二2

privateStringaction;状态.成功=1失败二2

privateStringIoading_time;j2^^:计算下拉开始到接口返回数据的时间,(开始加载报0,加

载成功或加载失败才上报时间)

privateStringdetail;^«(没有则上报空)

privateStringextend工;失败的message(没有则上报空)

privateStringen:启动日志类型标记

publicStringgetEntryO{

returnentry;

)

publicvoidsetEntry(Stringentry){

this.entry=entry;

publicStringgetOpen_ad_type(){

returnopen_ad_type;

)

publicvoidsetOpen_ad_type(Stringopen_ad_type){

this.open_ad_type=open_ad_type;

)

publicStringgetActionQ{

returnaction;

)

publicvoidsetAction(Stringaction){

this.action=action;

)

publicStringgetLoading_time(){

returnloading.time;

)

publicvoidsetLoading_time(Stringloading_time){

this.loading_time=loading_time;

)

publicStringgetDetailQ{

returndetail;

)

publicvoidsetDetail(Stringdetail){

this.detail=detail;

)

publicStringgetExtendlQ{

returnextendi;

)

publicvoidsetExtendl(Stringextendi){

this.extendl=extendi;

publicStringgetEn(){

returnen;

)

publicvoidsetEn(Stringen){

this.en=en;

}

)

3.4.3错误日志Bean

packagecom.atguigu.bean;

*错误日志

y

publicclassAppErrorLog{

privateStringerrorBrief;

privateStringerrorDetail;错误详情

publicStringgetErrorBriefQ{

returnerrorBrief;

)

publicvoidsetErrorBrief(StringerrorBrief){

this.errorBrief=errorBrief;

)

publicStringgetErrorDetail(){

returnerrorDetail;

)

publicvoidsetErrorDetail(StringerrorDetail){

thi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论