大数据分析案例(Hdaoop+Hive+FineBI)

一、准备数据集

1.在MySQL中建对应表

CREATE TABLE orders (
    id INT , -- 订单ID
    order_status_code VARCHAR(255), -- 订单状态编码
    order_status_name VARCHAR(255), -- 订单状态名称
    match_status_name VARCHAR(255), -- 撮合状态名称
    create_time DATETIME, -- 创建时间
    update_time DATETIME, -- 最近更新时间
    deal_time DATETIME, -- 成交时间
    fulfillment_time DATETIME, -- 履约完成时间
    total_quantity INT, -- 商品总数量
    total_price DECIMAL(10, 2), -- 订单总价
    purchase_unit_id INT, -- 采购单位ID
    supplier_id INT, -- 供应商ID
    creator_id INT, -- 创建人ID
    region_code VARCHAR(255), -- 区划编码
    product_id INT, -- 商品ID
    product_name VARCHAR(255), -- 商品名称
    category_id INT, -- 后台三级类目ID
    brand_id INT, -- 商品品牌ID
    brand_name VARCHAR(255), -- 商品品牌名称
    model_name VARCHAR(255), -- 商品型号名称
    quantity INT, -- 商品数量
    unit_price DECIMAL(10, 2), -- 商品单价
    product_total_price DECIMAL(10, 2), -- 商品总价
    sku_number VARCHAR(255), -- SKU编号
    business_instance_code VARCHAR(255), -- 业务实例编码
    bidding_method_name VARCHAR(255), -- 竞价方式名称
    source_system VARCHAR(255), -- 来源系统
    business_instance_name VARCHAR(255), -- 业务实例名称
    business_type_code VARCHAR(255), -- 业务类型编码
    business_type_name VARCHAR(255), -- 业务类型名称
    business_module VARCHAR(255), -- 业务模块
    trade_module VARCHAR(255), -- 交易模块
    purchaser_id INT, -- 采购人ID
    shipping_fee DECIMAL(10, 2), -- 订单运费(分)
    order_product_id INT, -- 订单商品ID
    purchase_plan_source VARCHAR(255), -- 采购计划来源
    has_accessories BOOLEAN, -- 是否含有配件
    accessory_amount DECIMAL(10, 2), -- 配件金额
    accessory_quantity INT, -- 配件数量
    original_unit_price DECIMAL(10, 2), -- 商品原单价
    third_level_category_name VARCHAR(255), -- 第三级分类名称
    region_name VARCHAR(255), -- 地区名称
    origin_cost DECIMAL(10, 2), -- 原产地费用
    actual_cost DECIMAL(10, 2) -- 实际费用
);

2.将data.csv数据导入到MySQL中(HadoopTest数据库的orders表中)

在MySQL中执行以下指令

load data local infile '~/data.csv' # 文件路径

into table orders             # 表名

character set utf8                 # 编码

fields terminated by ','           # 分隔符

lines terminated by '\r\n'

ignore 1 lines;                    # 忽略第一行,因为表头已建好

效果图 

 查看导入是否乱码(有乱码看这里

 二、使用sqoop将数据从MySQL中导入到Hive,原文点这里

1. 在Hive里建立表,用来接收mysql表

CREATE TABLE orders (
    id INT, -- 订单ID
    order_status_code STRING, -- 订单状态编码
    order_status_name STRING, -- 订单状态名称
    match_status_name STRING, -- 撮合状态名称
    create_time TIMESTAMP, -- 创建时间
    update_time TIMESTAMP, -- 最近更新时间
    deal_time TIMESTAMP, -- 成交时间
    fulfillment_time TIMESTAMP, -- 履约完成时间
    total_quantity INT, -- 商品总数量
    total_price DECIMAL(10, 2), -- 订单总价
    purchase_unit_id INT, -- 采购单位ID
    supplier_id INT, -- 供应商ID
    creator_id INT, -- 创建人ID
    region_code STRING, -- 区划编码
    product_id INT, -- 商品ID
    product_name STRING, -- 商品名称
    category_id INT, -- 后台三级类目ID
    brand_id INT, -- 商品品牌ID
    brand_name STRING, -- 商品品牌名称
    model_name STRING, -- 商品型号名称
    quantity INT, -- 商品数量
    unit_price DECIMAL(10, 2), -- 商品单价
    product_total_price DECIMAL(10, 2), -- 商品总价
    sku_number STRING, -- SKU编号
    business_instance_code STRING, -- 业务实例编码
    bidding_method_name STRING, -- 竞价方式名称
    source_system STRING, -- 来源系统
    business_instance_name STRING, -- 业务实例名称
    business_type_code STRING, -- 业务类型编码
    business_type_name STRING, -- 业务类型名称
    business_module STRING, -- 业务模块
    trade_module STRING, -- 交易模块
    purchaser_id INT, -- 采购人ID
    shipping_fee DECIMAL(10, 2), -- 订单运费(分)
    order_product_id INT, -- 订单商品ID
    purchase_plan_source STRING, -- 采购计划来源
    has_accessories BOOLEAN, -- 是否含有配件
    accessory_amount DECIMAL(10, 2), -- 配件金额
    accessory_quantity INT, -- 配件数量
    original_unit_price DECIMAL(10, 2), -- 商品原单价
    third_level_category_name STRING, -- 第三级分类名称
    region_name STRING, -- 地区名称
    origin_cost DECIMAL(10, 2), -- 原产地费用
    actual_cost DECIMAL(10, 2) -- 实际费用
);

2. 在命令窗口使用下方命令(加粗部分改成自己的)

sqoop import --connect jdbc:mysql://192.168.10.102:3306/HadoopTest --username root --password 1111 --table orders  --delete-target-dir --num-mappers 1 --hive-import --hive-database db_msg --hive-table orders

解释:将我ip地址为192.168.10.102的机子,mysql中的HadoopTest数据库中orders表导入到Hive的db_msg数据库的orders表

3.查看Hive中对应表是否有记录,是否乱码

4.问题-导入过程没报错,但是数据都是null

eg:

解决:导入语句中有   --fields-terminated-by ','(去掉这句)

5.问题-导入过去的数据被分开(“供应商同意取消订单,订单关闭”)

解决: 

1.查看MySQL中的表,可能从csv导入到MySQL的过程中已经分开了(我就是)

2.可以将csv中逗号改成下划线

三、使用fineBI进行可视化

1.进行ETL(数据抽取、转换和加载)

筛选可用数据,拆分时间构建几个新属性

CREATE TABLE orders2 (
    id INT, -- 订单ID
    order_status_name STRING, -- 订单状态名称
    match_status_name STRING, -- 撮合状态名称
    deal_time TIMESTAMP, -- 成交时间
    total_quantity INT, -- 商品总数量
    total_price DECIMAL(10, 2), -- 订单总价
    brand_name STRING, -- 商品品牌名称
    quantity INT, -- 商品数量
    unit_price DECIMAL(10, 2), -- 商品单价
    bidding_method_name STRING, -- 竞价方式名称
    business_instance_name STRING, -- 业务实例名称
    third_level_category_name STRING, -- 第三级分类名称
    region_name STRING, -- 地区名称
    actual_cost DECIMAL(10, 2) -- 实际费用
    ,deal_day string ,--时间_天
    deal_hour string--时间_小时
);

 2.基于Hive完成需求的各个指标计算

2-1:计算每个时段交易数据

CREATE TABLE IF NOT EXISTS everyhour_trading
COMMENT "每个时间段交易次数" AS
SELECT
orders2.deal_hour, count(*) as counts
from orders2 where deal_hour is not null
GROUP BY orders2.deal_hour;
-- drop table everyhour_trading;

2-3:计算交易物品占比

CREATE TABLE IF NOT EXISTS item_ratio
COMMENT "交易物品占比" AS
SELECT
orders2.third_level_category_name, count(*) as counts
from orders2 where third_level_category_name !=''
GROUP BY orders2.third_level_category_name
ORDER BY  counts DESC

2-4:计算交易情况比例

CREATE TABLE IF NOT EXISTS ok
COMMENT "交易情况比例" AS
SELECT
orders2.order_status_name, count(*) as counts
from orders2 where order_status_name !=''
GROUP BY orders2.order_status_name
ORDER BY  counts DESC
limit 5;

2-5:计算当天交易次数

CREATE TABLE IF NOT EXISTS total_jiaoyi_success
COMMENT "交易成功次数" AS
SELECT
count(*) as total
from orders2
where orders2.order_status_name = "已结算_交易完成";

2-6:计算 取消交易数

CREATE TABLE IF NOT EXISTS total_jiaoyi
COMMENT "取消交易数" AS
SELECT
count(*) as total
from orders2 where orders2.order_status_name!="已结算_交易完成";

 3.连接fineBI

3-1:连接Hive后上传数据

3-2:选择自己建立的表

3-3:新建分析主题 

3-4: 添加仪表板和组件

3-5:制作多个组件,选择合适的 图标类型

eg:

 3-6:最后把所有组件放入仪表板,并排好格式

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值