项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一) 第1章 数据仓库概念 第2章 项目需求及架构设计 第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

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

2.1 项目需求分析

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2.2 项目框架

2.2.1 技术选型

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2.2.2 系统数据流程设计

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2.2.3 框架版本选型

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2.2.4 服务器选型

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2.2.5 集群资源规划设计

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

2)测试集群服务器规划

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

第3章 数据生成模块

3.1 埋点数据基本格式

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

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

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

{
"ap":"xxxxx",//项目数据来源 app pc
"cm": {  //公共字段
       "mid": "",  // (String) 设备唯一标识
       "uid": "",  // (String) 用户标识
       "vc": "1",  // (String) versionCode,程序版本号
       "vn": "1.0",  // (String) versionName,程序版本名
       "l": "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,屏幕宽高
       "t": "1506047606608",  // (String) 客户端日志产生时的时间
       "nw": "WIFI",  // (String) 网络模式
       "ln": 0,  // (double) lng经度
       "la": 0  // (double) lat 纬度
  },
"et": [  //事件
          {
               "ett": "1506047605364",  //客户端事件产生时间
               "en": "display",  //事件名称
               "kv": {  //事件结果,以key-value形式自行定义
                   "goodsid": "236",
                   "action": "1",
                   "extend1": "1",
"place": "2",
"category": "75"
              }
          }
      ]
}

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

1540934156385|{
   "ap": "gmall",
   "cm": {
       "uid": "1234",
       "vc": "2",
       "vn": "1.0",
       "la": "EN",
       "sr": "",
       "os": "7.1.1",
       "ar": "CN",
       "md": "BBB100-1",
       "ba": "blackberry",
       "sv": "V2.2.1",
       "g": "abc@gmail.com",
       "hw": "1620x1080",
       "t": "1506047606608",
       "nw": "WIFI",
       "ln": 0
  },
       "et": [
          {
               "ett": "1506047605364",  //客户端事件产生时间
               "en": "display",  //事件名称
               "kv": {  //事件结果,以key-value形式自行定义
                   "goodsid": "236",
                   "action": "1",
                   "extend1": "1",
"place": "2",
"category": "75"
              }
          },{
               "ett": "1552352626835",
               "en": "active_background",
               "kv": {
                    "active_source": "1"
              }
          }
      ]
  }
}

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

3.2 事件日志数据

3.2.1 商品列表页(loading)

事件名称:loading

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.2 商品点击(display)

事件标签:display

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.3 商品详情页(newsdetail)

事件标签:newsdetail

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.4 广告(ad)

事件名称:ad

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.5 消息通知(notification)

事件标签:notification

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.6 用户前台活跃(active_foreground)

事件标签: active_foreground 项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.7 用户后台活跃(active_background)

事件标签: active_background

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.8 评论(comment)

描述:评论表 项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.9 收藏(favorites)

描述:收藏

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.10 点赞(praise)

描述:所有的点赞表 项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.2.11 错误日志

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.3 启动日志数据

事件标签: start

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

{
   "action":"1",
   "ar":"MX",
   "ba":"HTC",
   "detail":"",
   "en":"start",
   "entry":"2",
   "extend1":"",
   "g":"43R2SEQX@gmail.com",
   "hw":"640*960",
   "l":"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",
   "sr":"B",
   "sv":"V2.0.6",
   "t":"1561472502444",
   "uid":"995",
   "vc":"10",
   "vn":"1.3.4"
}

3.4 数据生成脚本

项目实战从0到1之hive(33)大数据项目之电商数仓(用户行为数据采集)(一)
第1章 数据仓库概念
第2章 项目需求及架构设计
第3章 数据生成模块

3.4.1 创建Maven工程

1)创建log-collector 2)创建一个包名:com.kgg.appclient 3)在com.kgg.appclient包下创建一个类,AppMain。 4)在pom.xml文件中添加如下内容

<!--版本号统一-->
<properties>
   <slf4j.version>1.7.20</slf4j.version>
   <logback.version>1.0.7</logback.version>
</properties>

<dependencies>
   <!--阿里巴巴开源json解析框架-->
   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.51</version>
   </dependency>

   <!--日志生成框架-->
   <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-core</artifactId>
       <version>${logback.version}</version>
   </dependency>
   <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>${logback.version}</version>
   </dependency>
</dependencies>

<!--编译打包插件-->
<build>
   <plugins>
       <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.2</version>
           <configuration>
               <source>1.8</source>
               <target>1.8</target>
           </configuration>
       </plugin>
       <plugin>
           <artifactId>maven-assembly-plugin </artifactId>
           <configuration>
               <descriptorRefs>
                   <descriptorRef>jar-with-dependencies</descriptorRef>
               </descriptorRefs>
               <archive>
                   <manifest>
                       <mainClass>com.kgg.appclient.AppMain</mainClass>
                   </manifest>
               </archive>
           </configuration>
           <executions>
               <execution