IT评测·应用市场-qidao123.com
标题:
大数据分析案例(Hdaoop+Hive+FineBI)
[打印本页]
作者:
麻花痒
时间:
2025-1-8 17:04
标题:
大数据分析案例(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:末了把所有组件放入仪表板,并排好格式
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4