一、准备数据集
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企服之家,中国第一个企服评测及商务社交产业平台。 |