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

打印 上一主题 下一主题

主题 1026|帖子 1026|积分 3078

一、准备数据集

1.在MySQL中建对应表

  1. CREATE TABLE orders (
  2.     id INT , -- 订单ID
  3.     order_status_code VARCHAR(255), -- 订单状态编码
  4.     order_status_name VARCHAR(255), -- 订单状态名称
  5.     match_status_name VARCHAR(255), -- 撮合状态名称
  6.     create_time DATETIME, -- 创建时间
  7.     update_time DATETIME, -- 最近更新时间
  8.     deal_time DATETIME, -- 成交时间
  9.     fulfillment_time DATETIME, -- 履约完成时间
  10.     total_quantity INT, -- 商品总数量
  11.     total_price DECIMAL(10, 2), -- 订单总价
  12.     purchase_unit_id INT, -- 采购单位ID
  13.     supplier_id INT, -- 供应商ID
  14.     creator_id INT, -- 创建人ID
  15.     region_code VARCHAR(255), -- 区划编码
  16.     product_id INT, -- 商品ID
  17.     product_name VARCHAR(255), -- 商品名称
  18.     category_id INT, -- 后台三级类目ID
  19.     brand_id INT, -- 商品品牌ID
  20.     brand_name VARCHAR(255), -- 商品品牌名称
  21.     model_name VARCHAR(255), -- 商品型号名称
  22.     quantity INT, -- 商品数量
  23.     unit_price DECIMAL(10, 2), -- 商品单价
  24.     product_total_price DECIMAL(10, 2), -- 商品总价
  25.     sku_number VARCHAR(255), -- SKU编号
  26.     business_instance_code VARCHAR(255), -- 业务实例编码
  27.     bidding_method_name VARCHAR(255), -- 竞价方式名称
  28.     source_system VARCHAR(255), -- 来源系统
  29.     business_instance_name VARCHAR(255), -- 业务实例名称
  30.     business_type_code VARCHAR(255), -- 业务类型编码
  31.     business_type_name VARCHAR(255), -- 业务类型名称
  32.     business_module VARCHAR(255), -- 业务模块
  33.     trade_module VARCHAR(255), -- 交易模块
  34.     purchaser_id INT, -- 采购人ID
  35.     shipping_fee DECIMAL(10, 2), -- 订单运费(分)
  36.     order_product_id INT, -- 订单商品ID
  37.     purchase_plan_source VARCHAR(255), -- 采购计划来源
  38.     has_accessories BOOLEAN, -- 是否含有配件
  39.     accessory_amount DECIMAL(10, 2), -- 配件金额
  40.     accessory_quantity INT, -- 配件数量
  41.     original_unit_price DECIMAL(10, 2), -- 商品原单价
  42.     third_level_category_name VARCHAR(255), -- 第三级分类名称
  43.     region_name VARCHAR(255), -- 地区名称
  44.     origin_cost DECIMAL(10, 2), -- 原产地费用
  45.     actual_cost DECIMAL(10, 2) -- 实际费用
  46. );
复制代码

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

在MySQL中实验以下指令
  1. load data local infile '~/data.csv' # 文件路径
  2. into table orders             # 表名
  3. character set utf8                 # 编码
  4. fields terminated by ','           # 分隔符
  5. lines terminated by '\r\n'
  6. ignore 1 lines;                    # 忽略第一行,因为表头已建好
复制代码
效果图 

 检察导入是否乱码(有乱码看这里)

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

1. 在Hive里创建表,用来吸收mysql表

  1. CREATE TABLE orders (
  2.     id INT, -- 订单ID
  3.     order_status_code STRING, -- 订单状态编码
  4.     order_status_name STRING, -- 订单状态名称
  5.     match_status_name STRING, -- 撮合状态名称
  6.     create_time TIMESTAMP, -- 创建时间
  7.     update_time TIMESTAMP, -- 最近更新时间
  8.     deal_time TIMESTAMP, -- 成交时间
  9.     fulfillment_time TIMESTAMP, -- 履约完成时间
  10.     total_quantity INT, -- 商品总数量
  11.     total_price DECIMAL(10, 2), -- 订单总价
  12.     purchase_unit_id INT, -- 采购单位ID
  13.     supplier_id INT, -- 供应商ID
  14.     creator_id INT, -- 创建人ID
  15.     region_code STRING, -- 区划编码
  16.     product_id INT, -- 商品ID
  17.     product_name STRING, -- 商品名称
  18.     category_id INT, -- 后台三级类目ID
  19.     brand_id INT, -- 商品品牌ID
  20.     brand_name STRING, -- 商品品牌名称
  21.     model_name STRING, -- 商品型号名称
  22.     quantity INT, -- 商品数量
  23.     unit_price DECIMAL(10, 2), -- 商品单价
  24.     product_total_price DECIMAL(10, 2), -- 商品总价
  25.     sku_number STRING, -- SKU编号
  26.     business_instance_code STRING, -- 业务实例编码
  27.     bidding_method_name STRING, -- 竞价方式名称
  28.     source_system STRING, -- 来源系统
  29.     business_instance_name STRING, -- 业务实例名称
  30.     business_type_code STRING, -- 业务类型编码
  31.     business_type_name STRING, -- 业务类型名称
  32.     business_module STRING, -- 业务模块
  33.     trade_module STRING, -- 交易模块
  34.     purchaser_id INT, -- 采购人ID
  35.     shipping_fee DECIMAL(10, 2), -- 订单运费(分)
  36.     order_product_id INT, -- 订单商品ID
  37.     purchase_plan_source STRING, -- 采购计划来源
  38.     has_accessories BOOLEAN, -- 是否含有配件
  39.     accessory_amount DECIMAL(10, 2), -- 配件金额
  40.     accessory_quantity INT, -- 配件数量
  41.     original_unit_price DECIMAL(10, 2), -- 商品原单价
  42.     third_level_category_name STRING, -- 第三级分类名称
  43.     region_name STRING, -- 地区名称
  44.     origin_cost DECIMAL(10, 2), -- 原产地费用
  45.     actual_cost DECIMAL(10, 2) -- 实际费用
  46. );
复制代码
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(数据抽取、转换和加载)

筛选可用数据,拆分时间构建几个新属性
  
  1. CREATE TABLE orders2 (
  2.     id INT, -- 订单ID
  3.     order_status_name STRING, -- 订单状态名称
  4.     match_status_name STRING, -- 撮合状态名称
  5.     deal_time TIMESTAMP, -- 成交时间
  6.     total_quantity INT, -- 商品总数量
  7.     total_price DECIMAL(10, 2), -- 订单总价
  8.     brand_name STRING, -- 商品品牌名称
  9.     quantity INT, -- 商品数量
  10.     unit_price DECIMAL(10, 2), -- 商品单价
  11.     bidding_method_name STRING, -- 竞价方式名称
  12.     business_instance_name STRING, -- 业务实例名称
  13.     third_level_category_name STRING, -- 第三级分类名称
  14.     region_name STRING, -- 地区名称
  15.     actual_cost DECIMAL(10, 2) -- 实际费用
  16.     ,deal_day string ,--时间_天
  17.     deal_hour string--时间_小时
  18. );
复制代码
 2.基于Hive完成需求的各个指标盘算

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

  
  1. CREATE TABLE IF NOT EXISTS everyhour_trading
  2. COMMENT "每个时间段交易次数" AS
  3. SELECT
  4. orders2.deal_hour, count(*) as counts
  5. from orders2 where deal_hour is not null
  6. GROUP BY orders2.deal_hour;
  7. -- drop table everyhour_trading;
复制代码
2-3:盘算交易物品占比

  
  1. CREATE TABLE IF NOT EXISTS item_ratio
  2. COMMENT "交易物品占比" AS
  3. SELECT
  4. orders2.third_level_category_name, count(*) as counts
  5. from orders2 where third_level_category_name !=''
  6. GROUP BY orders2.third_level_category_name
  7. ORDER BY  counts DESC
复制代码
2-4:盘算交易环境比例

  
  1. CREATE TABLE IF NOT EXISTS ok
  2. COMMENT "交易情况比例" AS
  3. SELECT
  4. orders2.order_status_name, count(*) as counts
  5. from orders2 where order_status_name !=''
  6. GROUP BY orders2.order_status_name
  7. ORDER BY  counts DESC
  8. limit 5;
复制代码
2-5:盘算当天交易次数

  
  1. CREATE TABLE IF NOT EXISTS total_jiaoyi_success
  2. COMMENT "交易成功次数" AS
  3. SELECT
  4. count(*) as total
  5. from orders2
  6. where orders2.order_status_name = "已结算_交易完成";
复制代码
2-6:盘算 取消交易数

   
  1. CREATE TABLE IF NOT EXISTS total_jiaoyi
  2. COMMENT "取消交易数" AS
  3. SELECT
  4. count(*) as total
  5. 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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表