1.2.4.3 HDFS离线

优质
小牛编辑
136浏览
2023-12-01

本方案适用于不方便直接接入Hubble SDK,或者业务数据需要二次加工清洗后才能使用的场景

具体的方式是 1. 业务方数据开发人员根据业务场景进行数据清洗,并按照Hubble “事件-用户” 模型生成数据存放至HDFS指定目录 2. Hubble系统每天定时从上述指定目录拉取数据进行处理并生成事件/用户数据

1.1. 定义数据

事件数据

字段名字段描述数据类型是否必填
type数据类型标识(event)string必填
userId用户 IDstring必填
deviceUdid设备 IDstring非必填
dataType数据报文类型(默认外部事件 e)string必填
sdkTypesdk类型(Android / iOS / js)string必填
eventId事件 IDstring必填
time事件发生时间(绝对毫秒)long必填
costTime事件耗时(毫秒)int非必填
appKey应用标识string必填
sessionUuid会话 IDstring非必填
ip客户端ipstring非必填
country国家string非必填
region省份string非必填
city城市string非必填
appVersionapp版本string非必填
appChannelapp渠道string非必填
devicePlatform设备平台string非必填
deviceOs操作系统string非必填
deviceOsVersion操作系统版本string非必填
deviceModel设备机型string非必填
deviceManufacturer设备制造商string非必填
deviceResolution设备分辨率string非必填
useWifi是否使用wifistring非必填
screenWidth分辨率(宽)string非必填
screenHeight分辨率(高)string非必填
deviceCarrier网络运营商string非必填
networkType联网类型string非必填
localeLanguage本地语言string非必填
category事件类别string非必填
label事件标签string非必填
attributes事件自定义属性map非必填
// 自定义事件demo数据
{
    "type": "event",
    "userId": "18921895133",
    "deviceUdid": "5cc9531c48a0e12a7143c13bee058166e9e9d8e1",
    "dataType": "e",
    "sdkType": "iOS",
    "eventId": "clickButton",
    "time": 1434556935000,
    "costTime": 20,
    "appKey": "MA-XXXX-437494F370B3",
    "sessionUuid": "1234-342423-232",
    "ip": "172.0.0.1",
    "country": "中国",
    "region": "浙江",
    "city": "杭州",
    "appVersion": "3.2",
    "appChannel": "appstore",
    "devicePlatform": "iPad",
    "deviceOs": "iOS",
    "deviceOsVersion": "7.0",
    "deviceModel": "iPhone6",
    "deviceManufacturer": "Apple",
    "deviceResolution": "640x960",
    "userWifi": "true",
    "screenWidth": "640",
    "screenHeight": "960",
    "deviceCarrier": "中国移动",
    "networkType": "4G",
    "localeLanguage": "en",
    "category": "首页",
    "label": "我喜欢的",
    "attributes": {
        "userfrom": "baidu",
        "lastPage": "个人信息页"
    }
}

用户数据

字段名字段描述数据类型是否必填
type数据类型标识(user)string必填
userId用户IDstring必填
$account用户账号string非必填
$realName用户姓名string非必填
$birthday用户生日string非必填
$age用户年龄int非必填
$gender用户性别string非必填
$country常用地址-国家string非必填
$province常用地址-省份string非必填
$city常用地址-城市string非必填
attributes用户自定义属性map非必填
// 用户demo数据
{
    "type": "user",
    "userId": "ABCDEF123456789",
    "$account": "hubbletest@163.com", // $开头的字段为公共字段
    "$realName": "王磊",
    "$birthday": "1990-09-10",
    "$age": 28,
    "$gender": "male",
    "$$country": "中国",
    "$province": "浙江",
    "$city": "杭州",
    "attributes": {
        "vip": "黄金",  // 非$开头字段为业务自定义字段
        "nickname":"小王王"
    }
}

说明: 1. 事件数据和用户数据均定义成标准json格式,并且key区分大小写,请和上述文档保持一致。一次事件或者一条用户信息对应一条json日志,最终保存为文本、Gzip、Lzo、Snappy格式 2. 在定义数据时,请尽量使用公共字段,公共字段不满足业务需求时才自定义属性 3. 虽然本方案未直接使用SDK采集数据,但是仍然需要开发方发送sdkType字段,默认Android / iOS / js 4. 该方案一般离线处理周期为天,同时在凌晨进行,凌晨9点之前结束,保证数据使用人员上班直接可用 5. 业务方HDFS目录需要对Hubble的用户开放读权限 6. 该离线流程只能保证当天在Hubble系统上查询前一天数据,部分实时分析功能不可