概述

本文是基于 Hadoop + Hive + HDFS + DataX + MySQL 的会员主题与广告业务链路验证实战文章。

一、数据测试

1.1 活跃会员 DWS

sh dws_load_member_start.sh 2020-07-21

1.2 活跃会员 ADS

sh ads_load_member_active.sh 2020-07-21

1.3 新增会员 DWS

sh dws_load_member_add_day.sh 2020-07-21

1.4 新增会员 ADS

sh ads_load_member_add.sh 2020-07-21

1.5 会员留存 DWS

sh dws_load_member_retention_day.sh 2020-07-21

1.6 会员留存 ADS

sh ads_load_member_retention.sh 2020-07-21

二、导出测试

2.1 HDFS 导出

数据存储在 HDFS 上,可通过 HDFS 命令查看。

2.2 DataX 导出

sh /opt/wzk/hive/export_member_active_count.sh 2020-07-21

2.3 MySQL 验证

运行 07-21 到 07-31 的数据后,可在 MySQL 中查询结果进行验证。

三、广告业务 ODS/DWD/ADS

3.1 基本介绍

互联网平台通过免费基础服务吸引用户,利用广告业务实现盈利。电商平台天然适合进行商品推广,广告投放关注曝光量、点击量、购买量、点击率、购买率等指标。

3.2 事件日志数据样例

{
  "wzk_event": [{
    "name": "goods_detail_loading",
    "json": {
      "entry": "3",
      "goodsid": "0",
      "loading_time": "80",
      "action": "4",
      "staytime": "68",
      "showtype": "4"
    },
    "time": 1596225273755
  }, {
    "name": "ad",
    "json": {
      "duration": "17",
      "ad_action": "0",
      "shop_id": "786",
      "event_type": "ad",
      "ad_type": "4",
      "show_style": "1",
      "product_id": "2772",
      "place": "placeindex_left",
      "sort": "0"
    },
    "time": 1596278404415
  }],
  "attr": {
    "area": "拉萨",
    "uid": "2F10092A86",
    "app_v": "1.1.12",
    "device_id": "1FB872-9A10086",
    "os_type": "4.1",
    "channel": "KS",
    "brand": "xiaomi-2"
  }
}

3.3 采集的事件类型

  • goods_detail_loading:商品详情页加载
  • loading:商品列表
  • notification:消息通知
  • comment:商品评论
  • favorites:收藏
  • praise:点赞
  • ad:广告

3.4 广告字段说明

字段说明
action用户行为:0 曝光、1 点击、2 购买
duration停留时长
shop_id商家 id
ad_type广告类型:1 JPG、2 PNG、3 GIF、4 SWF
show_style展示样式:0 静态图、1 动态图
product_id产品 id
place广告位:1 首页、2 左侧、3 右侧、4 列表页

3.5 需求指标

点击次数统计(分时统计):

  • 曝光次数、不同用户 ID 数、不同用户数
  • 点击次数、不同用户 ID 数、不同用户数
  • 购买次数、不同用户 ID 数、不同用户数

转化率-漏斗分析:

  • 点击率 = 点击次数 / 曝光次数
  • 购买率 = 购买次数 / 点击次数

活动曝光效果评估: 按时间段、广告位、产品统计曝光次数最多的前 N 个。

3.6 ODS 层建表

use ods;
drop table if exists ods.ods_log_event;
CREATE EXTERNAL TABLE ods.ods_log_event(
  `str` string
) PARTITIONED BY (`dt` string)
STORED AS TEXTFILE
LOCATION '/user/data/logs/event';

3.7 ODS 层脚本

#!/bin/bash
source /etc/profile
if [ -n "$1" ]
then
  do_date=$1
else
  do_date=`date -d "-1 day" +%F`
fi
sql="
alter table ods.ods_log_event add partition (dt='$do_date');
"
hive -e "$sql"

四、常见问题速查

症状根因修复方法
ADS 脚本执行报错脚本名称拼写错误对照实际文件名更正
Hive 查不到当天数据ODS 分区未添加先执行 ods_load_event_log.sh 补充分区
DataX 成功但 MySQL 无数据源路径无文件或日期不一致核对 HDFS 路径、DataX 配置与目标表
广告指标口径对不上action 字段取值与 SQL 逻辑未映射固化口径:0=曝光,1=点击,2=购买