Hive实战:电商数据分析平台

文章目录

  • [1. 项目准备](#1. 项目准备)
    • [1.1 需求分析](#1.1 需求分析)
    • [1.2 数据结构](#1.2 数据结构)
      • [1.2.1 订单表](#1.2.1 订单表)
      • [1.2.2 访客表](#1.2.2 访客表)
      • [1.2.3 商品类目表](#1.2.3 商品类目表)
      • [1.2.4 退款表](#1.2.4 退款表)
      • [1.2.5 物流表](#1.2.5 物流表)
      • [1.2.6 用户表](#1.2.6 用户表)
    • [1.3 准备数据文件](#1.3 准备数据文件)
      • [1.3.1 上传数据文件到虚拟机](#1.3.1 上传数据文件到虚拟机)
      • [1.3.2 在HDFS上创建数据目录](#1.3.2 在HDFS上创建数据目录)
      • [1.3.3 上传数据文件到HDFS目录](#1.3.3 上传数据文件到HDFS目录)
    • [1.4 创建数据库](#1.4 创建数据库)
    • [1.5 创建数据表](#1.5 创建数据表)
      • [1.5.1 创建订单表](#1.5.1 创建订单表)
      • [1.5.2 创建访客表](#1.5.2 创建访客表)
      • [1.5.3 创建商品类目表](#1.5.3 创建商品类目表)
      • [1.5.4 创建退款表](#1.5.4 创建退款表)
      • [1.5.5 创建物流表](#1.5.5 创建物流表)
      • [1.5.6 创建用户表](#1.5.6 创建用户表)
  • [2. 项目实现](#2. 项目实现)
    • [2.1 总体运营指标](#2.1 总体运营指标)
      • [2.1.1 独立访客数](#2.1.1 独立访客数)
      • [2.1.2 页面访问数(PV)](#2.1.2 页面访问数(PV))
    • [2.2 流量类指标](#2.2 流量类指标)
    • [2.3 网站销售类指标](#2.3 网站销售类指标)
    • [2.4 商品类指标](#2.4 商品类指标)
    • [2.5 营销类指标](#2.5 营销类指标)
    • [2.6 物流类指标](#2.6 物流类指标)
  • [3. 数据展示](#3. 数据展示)
    • [3.1 可视化软件简介](#3.1 可视化软件简介)
    • [3.2 可视化软件安装](#3.2 可视化软件安装)
      • [3.2.1 下载Tableau可视化软件](#3.2.1 下载Tableau可视化软件)
      • [3.2.2 安装Tableau可视化软件](#3.2.2 安装Tableau可视化软件)
    • [3.3 数据展示](#3.3 数据展示)
      • [3.3.1 导入数据](#3.3.1 导入数据)
      • [3.3.2 独立访客数](#3.3.2 独立访客数)
      • [3.3.3 页面访问数](#3.3.3 页面访问数)
      • [3.3.4 人均页面访问数](#3.3.4 人均页面访问数)
      • [3.3.5 总订单数量](#3.3.5 总订单数量)
      • [3.3.6 跳出率](#3.3.6 跳出率)
      • [3.3.7 页面访问时长](#3.3.7 页面访问时长)
      • [3.3.8 下单---支付金额转化率](#3.3.8 下单—支付金额转化率)
      • [3.3.9 下单---支付买家数转化率](#3.3.9 下单—支付买家数转化率)
      • [3.3.10 退款金额](#3.3.10 退款金额)
      • [3.3.11 出版社图书前10名](#3.3.11 出版社图书前10名)
      • [3.3.12 出版社销量排行](#3.3.12 出版社销量排行)
      • [3.3.13 平均发货时间](#3.3.13 平均发货时间)

1. 项目准备

1.1 需求分析

  1. 数据采集和整合:收集电商平台的交易日志,将其存储到合适的数据库或数据仓库中,并保证数据的准确性、完整性和实时性。
  2. 数据清洗和预处理:对采集到的数据进行清洗、转换和预处理,以确保数据的质量。
  3. 用户行为分析:通过分析交易日志中的用户行为数据,如点击、浏览、购买等,识别用户偏好、购买习惯和潜在的流失因素等。
  4. 销售趋势分析:通过分析销售数据,如销售额、销售渠道等,发现热门商品及其销售趋势,优化库存管理和采购计划。
  5. 交易异常监测:通过分析日志数据,检测异常订单、欺诈行为和支付问题等,提高系统的安全性。
  6. 数据可视化和报告:将分析结果以直观的图表、可视化仪表板和报告的形式展示,帮助决策者更好地理解数据,并做出相应的业务决策。

1.2 数据结构

1.2.1 订单表

字段解释 字段名 数据类型
订单 ID order_id string
订单时间 order_time bigint
买家 ID user_id bigint
商品 ID goods_id bigint
买家 IP user_ip string
收货地址 ship_add (shipping address) string
手机号 phone_no string
点击来源 click_source string
单点费用 click_cost float
订单完成时间 pay_ct (payment completion time) bigint
订单状态 pay_status (payment status) string

1.2.2 访客表

字段解释 字段名 数据类型
访问 IP access_ip string
访问时间 access_time bigint
网页跳转时间 jump_time bigint
用户 ID user_id bigint
手机号 phone_no string
商品 ID goods_id bigint
访问链接 access_con (access connection) string
访问事件 access_event string
点击来源 click_source string
单点费用 click_cost float

1.2.3 商品类目表

字段解释 字段名 数据类型
商品 ID goods_id bigint
商品名称 goods_name string
作者 author string
出版社 press string
出版时间 pub_time (published time) bigint
ISBN 编号 ISBN float
定价 pricing float
商品售价 goods_price bigint
月销量 mon_sales (month sales) string
发货地址 del_add (delivery address) string

1.2.4 退款表

字段解释 字段名 数据类型
订单 ID order_id bigint
买家 ID user_id bigint
图书 ID goods_id bigint
买家 IP user_ip string
订单时间 order_time bigint
退款时间 refund_time bigint
收货地址 ship_add (shipping address) string
手机号 phone_no string
运费险 fre_ins (freight insurance) string
退款原因 refund_reason string

1.2.5 物流表

字段解释 字段名 数据类型
订单 ID order_id bigint
物流单号 log_num (logistics single number) bigint
发货时间 del_time (the delivery time) bigint
收货时间 rec_time (receiving time) bigint

1.2.6 用户表

字段解释 字段名 数据类型
用户 ID user_id bigint
性别 gender string
年龄 age bigint
访问时间 access_time bigint
最后一次登录时间 last_login (last login time) bigint
点击来源 click_source string

1.3 准备数据文件

1.3.1 上传数据文件到虚拟机

  • 在slave2节点上执行命令:mkdir /ecdata
  • 执行命令:cd /ecdata
  • 将6个数据文件上传到/ecdata目录
  • 执行命令:ll

1.3.2 在HDFS上创建数据目录

  • 执行命令:hdfs dfs -mkdir /ecdata

1.3.3 上传数据文件到HDFS目录

  • 执行命令:hdfs dfs -put item.txt /ecdata

  • 执行命令:hdfs dfs -put logistics.txt /ecdata

  • 执行命令:hdfs dfs -put orders.txt /ecdata

  • 执行命令:hdfs dfs -put refund.txt /ecdata

  • 执行命令:hdfs dfs -put users.txt /ecdata

  • 执行命令:hdfs dfs -put visitors.txt /ecdata

1.4 创建数据库

  • 执行命令:create database ecdata;
  • 执行命令:use ecdata;,切换到ecdata数据库

1.5 创建数据表

1.5.1 创建订单表

  1. 创建订单表
    • 执行语句

      sql 复制代码
      create table orders (
          order_id string,
          order_time bigint,
          user_id bigint,
          goods_id bigint,
          user_ip string,
          ship_add string,
          phone_no string,
          click_source string,
          click_cost float,
          pay_ct bigint,
          pay_status string
      )
      row format delimited
      fields terminated by '\t';
  2. 向订单表加载数据
    • 执行语句:load data inpath '/ecdata/orders.txt' into table orders;
  3. 查看订单表记录
    • 执行语句:select * from orders limit 20;

1.5.2 创建访客表

  1. 创建访客表

    • 执行语句

      sql 复制代码
      create table visitors (
          access_ip string,
          access_time bigint,
          jump_time bigint,
          user_id bigint,
          phone_no string,
          goods_id bigint,
          access_con string,
          access_event string,
          click_source string,
          click_cost float
      )
      row format delimited
      fields terminated by '\t';
  2. 向访客表加载数据

    • 执行语句:load data inpath '/ecdata/visitors.txt' into table visitors;
  3. 查看访客表记录

    • 执行语句:select * from visitors limit 20;

1.5.3 创建商品类目表

  1. 创建商品类目表

    • 执行语句

      sql 复制代码
      create table item (
          goods_id bigint,
          goods_name string,
          author string,
          press string,
          pub_time bigint,
          isbn float,
          pricing float,
          goods_price bigint,
          mon_sales string,
          del_add string
      )
      row format delimited
      fields terminated by '\t';
  2. 向商品类目表加载数据

    • 执行语句:load data inpath '/ecdata/item.txt' into table item;
  3. 查看商品类目表记录

    • 执行语句:select * from item limit 20;

1.5.4 创建退款表

  1. 创建退款表

    • 执行语句

      sql 复制代码
      create table refund (
          order_id bigint,
          user_id bigint,
          goods_id bigint,
          user_ip string,
          order_time bigint,
          refund_time bigint,
          ship_add string,
          phone_no string,
          fre_ins string,
          refund_reason string
      )
      row format delimited
      fields terminated by '\t';
  2. 向退款表加载数据

    • 执行语句:load data inpath '/ecdata/refund.txt' into table refund;
  3. 查看退款表记录

    • 执行语句:select * from refund limit 20;

1.5.5 创建物流表

  1. 创建物流表

    • 执行语句

      sql 复制代码
      create table logistics (
          order_id bigint,
          log_num bigint,
          del_time bigint,
          rec_time bigint
      )
      row format delimited
      fields terminated by '\t';
  2. 向物流表加载数据

    • 执行语句:load data inpath '/ecdata/logistics.txt' into table logistics;
  3. 查看物流表记录

    • 执行语句:select * from logistics limit 20;

1.5.6 创建用户表

  1. 创建用户表

    • 执行语句

      sql 复制代码
      create table users (
          user_id bigint,
          gender string,
          age bigint,
          access_time bigint,
          last_login bigint,
          click_source string
      )
      row format delimited
      fields terminated by '\t';
  2. 向用户表加载数据

    • 执行语句:load data inpath '/ecdata/users.txt' into table users;
  3. 查看用户表记录

    • 执行语句:select * from users limit 20;

2. 项目实现

2.1 总体运营指标

2.1.1 独立访客数

  1. 时间维度

    • 执行语句

      sql 复制代码
      select t1.hour, count(t1.hour) from 
      (select user_id, from_unixtime(access_time, 'HH') as hour from visitors) t1,
      (select user_id, count(user_id) from visitors group by user_id) t2
      where t1.hour is not null and t1.user_id = t2.user_id group by t1.hour;			


    • 结果说明 :该查询统计了所有在 visitors 表中有访问记录的用户(通过自连接确保 user_id 存在)在各小时(00--23)的访问次数。结果显示全天每小时均有数百次访问,其中15点最高(551次),20点最低(435次),整体分布相对均匀,表明用户访问行为覆盖全天,无明显极端高峰或低谷。

      小时 访客数
      00 531
      01 546
      02 502
      03 480
      04 477
      05 497
      06 518
      07 483
      08 524
      09 523
      10 489
      11 486
      12 491
      13 493
      14 488
      15 551
      16 484
      17 509
      18 528
      19 538
      20 435
      21 479
      22 511
      23 467
  2. 地域维度

    • 执行语句

      sql 复制代码
      select t1.province, count(distinct t1.user_id) as visitor_count from
      (select user_id, split(ship_add, ' ')[0] as province from orders) t1,
      (select distinct user_id from visitors) t2
      where t1.province is not null and t1.user_id = t2.user_id
      group by t1.province;		


    • 结果说明:该查询统计了既访问过网站(visitors 表)又下过订单(orders 表)的独立用户数量,并按收货地址省份分组。结果显示全国31个省级行政区均有覆盖,用户数最多的为云南省(58人)、河北省(56人)和浙江省(53人),直辖市用户相对较少,反映下单活跃用户主要集中在人口大省或电商渗透率较高地区。

      省份 下单访客数
      上海市 14
      云南省 58
      内蒙古自治区 49
      北京市 15
      吉林省 48
      四川省 50
      天津市 16
      宁夏回族自治区 25
      安徽省 43
      山东省 42
      山西省 49
      广东省 52
      广西壮族自治区 46
      新疆维吾尔自治区 46
      江苏省 48
      江西省 40
      河北省 56
      河南省 49
      浙江省 53
      海南省 27
      湖北省 34
      湖南省 48
      甘肃省 44
      福建省 44
      西藏自治区 41
      贵州省 38
      辽宁省 52
      重庆市 31
      陕西省 43
      青海省 35
      黑龙江省 54
  3. 渠道维度

    • 执行语句

      sql 复制代码
      select t1.source, count(t1.source) from 
      (select user_id, click_source as source from visitors) t1,
      (select distinct user_id from visitors) t2
      where t1.source is not null and t1.user_id = t2.user_id
      group by t1.source;
    • 结果说明:该查询统计了不同流量来源的用户访问量,结果显示"淘宝直播"(2374)和"聚划算"(3652)是主要引流渠道,其次是"淘宝搜索"(642)和"淘宝橱窗"(1222),说明营销活动和直播内容对用户吸引作用显著,而"阿里博客"等渠道流量较低。

      渠道 访客数
      搜索 2
      淘宝搜索 642
      淘宝橱窗 1222
      淘宝直播 2374
      淘宝社区 1168
      直通车 1752
      聚划算 3652
      阿里博客 1218

2.1.2 页面访问数(PV)

  1. 时间维度

    • 执行语句

      sql 复制代码
      select from_unixtime(access_time, 'HH') as hour, count(*) as pv
      from visitors where access_time is not null
      group by from_unixtime(access_time, 'HH') order by hour;


    • 结果说明:该查询按小时统计了页面访问量(PV),结果显示全天各时段均有稳定访问,高峰出现在15点(551次)和19点(538次),低谷在20点(435次)和04点(477次)。整体分布较均衡,无极端波动,表明用户活跃时段覆盖全天,符合典型电商平台的访问规律。

      小时 页面访问数
      00 531
      01 546
      02 502
      03 480
      04 477
      05 497
      06 518
      07 483
      08 524
      09 523
      10 489
      11 486
      12 491
      13 493
      14 488
      15 551
      16 484
      17 509
      18 528
      19 538
      20 435
      21 479
      22 511
      23 467
  2. 地域维度

  3. 渠道维度

2.2 流量类指标

2.3 网站销售类指标

2.4 商品类指标

2.5 营销类指标

2.6 物流类指标

3. 数据展示

3.1 可视化软件简介

  • Tableau 是一款领先的可视化数据分析工具,能够快速连接多种数据源(如 Excel、SQL 数据库、云平台等),通过拖拽式操作实现高效的数据探索与交互式仪表板构建。其核心优势在于强大的可视化能力、实时数据更新和用户友好的界面,无需编程即可生成图表、地图、趋势分析等,广泛应用于商业智能、运营监控与决策支持。Tableau 支持多端共享与协作,助力个人和企业将复杂数据转化为直观洞察,提升数据驱动决策的效率与准确性。

3.2 可视化软件安装

3.2.1 下载Tableau可视化软件

3.2.2 安装Tableau可视化软件

3.3 数据展示

3.3.1 导入数据

3.3.2 独立访客数

3.3.3 页面访问数

3.3.4 人均页面访问数

3.3.5 总订单数量

3.3.6 跳出率

3.3.7 页面访问时长

3.3.8 下单---支付金额转化率

3.3.9 下单---支付买家数转化率

3.3.10 退款金额

3.3.11 出版社图书前10名

3.3.12 出版社销量排行

3.3.13 平均发货时间