Hadoop环境中使用Hive实现对产品和用户的数据分析

一、背景
某电商平台为了合理的投入人力物力创造更大的销售利润,现对已有的销售数据进行用户分析,提出合理的促销计划。

围绕产品和用户两大方面展开为电商平台制定策略提供分析及建议。

二、需求
用户分析:从性别、年龄、 职业、城市、居住年限,婚姻状况等维度找到高质量用户,并查看高质量用户人群的占比,为其提供高价值消费品 (定位高价值消费品以销售金额评估)。针对其他的用户,主要引导用户进行购买,多推荐一些热销的商品(定位热销产品)

产品分析:从销量、销售额都高的产品并以二八法则找到高贡献的一级产品类目

三、数据介绍
假定每条记录为一单

在这里插入图片描述

--建表
create table model2_datas
(User_ID int,
Product_ID string,
Gender string,
Age string,
Occupation int,
City_Category string,
Stay_In_Current_City_Years string,
Marital_Status int,
Product_Category_1 int,
Product_Category_2 int,
Product_Category_3 int,
Purchase double
)
row format delimited fields terminated by ',' --指定分隔符csv 为逗号分割
tblproperties(
"skip.header.line.count"="1" --跳过⽂件⾏⾸1⾏
);
--装载数据
load data local inpath '/home/hadoop/datas/model2_datas.csv' overwrite into
table model2_datas

四、 使用方法

本案例是在Hadoop分布式集群环境中完成,主要用到hive基础函数和开窗函数。
Hadoop一般有三个重要部分组成,分别是分布式文件系统(HDFS)、分布式计算(MapReduce)、数据仓库工具(Hive)。

  • HDFS(Hadoop Distributed Fill System) 是Hadoop 项目的子项目,使用多台计算机存储文件,并且提供统一的访问接口(NameNode),像是访问一个普通文件系统一样使用分布式文件系统。
    在这里插入图片描述
  • MapReduce 是一种分布式并行编程框架
    MapReduce 策略: 分而治之
    MapReduce 理念: 计算向数据靠拢而不是数据向计算靠拢
    Mapreduce工作流程
    在这里插入图片描述
  • Hive是Facebook为了解决海量日志数据的统计分析而开发的基于Hadoop的一个数据仓库工具(后来开源给了Apache软件基金会),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能:HQL。
    Hive特点
    Hive 本身并不支持数据存储和处理,只是一个面向用户的编程接口
    Hive 依赖分布式文件系统HDFS存储数据
    Hive 依赖分布式并行计算模型MapReduce 处理数据
    Hive架构
    在这里插入图片描述
    1.用户接口:Client CLI(hive shell)、JDBC/ODBC(java 访问 hive)、WEBUI(浏览器访问 hive)
    2.元数据:Metastore 元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    3.Hadoop 使用 HDFS 进行存储,使用 MapReduce 进行计算。
    4.驱动器:Driver
    (1)解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
    (2)编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
    (3)优化器(Query Optimizer):对逻辑执行计划进行优化。
    (4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是MR/Spark。
    在这里插入图片描述
    Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口。
    Hive 的数据模型主要有以下四种:
    在这里插入图片描述

五、 需求实现

  • 查询订单整体的消费情况(包括:总销售额、人均消费、平均每单消费)
select
	round(sum(purchase),2) totle_sales,
	round(sum(purchase)/count(distinct user_id),2) per_cost,
	round(sum(purchase)/count(*),2) avg_unit_cost
from
	model2_datas;

==>
totle_sales per_cost avg_unit_cost
5.017668378E9 851751.55 9333.86

  • 用户分析(找到高质量人群)

统计各性别消费情况(字段包含性别、人数、人数占比、人均消费、消费金额、消费占比) 并以消费占比降序

select
	*,
	concat(round((num_gender/sum(num_gender) over())*100,2),"%") as num_rate,
	concat(round((cost_gender/sum(cost_gender) over())*100,2),"%")
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大荣子哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值