前置:准备数据库
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ bin/hive
create database dw_dwd;
use dw_dwd;
一、商品维度表
1.1 表结构设计
| 序号 |
字段名 |
字段类型 |
字段中文名 |
描述 |
| 1 |
id |
STRING |
SKU_ID |
主键 |
| 2 |
price |
DECIMAL |
商品价格 |
来自sku表 |
| 3 |
sku_name |
STRING |
商品名称 |
来自sku表 |
| 4 |
sku_desc |
STRING |
商品描述 |
来自sku表 |
| 5 |
weight |
DECIMAL |
重量 |
来自sku表 |
| 6 |
is_sale |
INT |
是否在售 |
来自sku表 |
| 7 |
spu_id |
STRING |
SPU编号 |
来自sku表 |
| 8 |
spu_name |
STRING |
SPU名称 |
来自spu表 |
| 9 |
category3_id |
STRING |
三级品类ID |
来自sku表 |
| 10 |
category3_name |
STRING |
三级品类名称 |
来自base_category3表 |
| 11 |
category2_id |
STRING |
二级品类id |
来自base_category3表 |
| 12 |
category2_name |
STRING |
二级品类名称 |
来自base_category2表 |
| 13 |
category1_id |
STRING |
一级品类ID |
来自base_category2表 |
| 14 |
category1_name |
STRING |
一级品类名称 |
来自base_category1表 |
| 15 |
tm_id |
STRING |
品牌ID |
来自sku表 |
| 16 |
tm_name |
STRING |
品牌名称 |
来自base_trademark表 |
| 17 |
sku_attr_values |
STRING |
平台属性 |
JSON串 |
| 18 |
sku_sale_attr_values |
STRING |
销售属性 |
JSON串 |
| 19 |
create_time |
STRING |
创建时间 |
JSON串 |
1.2 建表语句
use dw_dwd;
DROP TABLE IF EXISTS dim_sku_full;
CREATE EXTERNAL TABLE dim_sku_full (
`id` STRING COMMENT '商品id',
`price` DECIMAL(16,2) COMMENT '商品价格',
`sku_name` STRING COMMENT '商品名称',
`sku_desc` STRING COMMENT '商品描述',
`weight` DECIMAL(16,2) COMMENT '重量',
`is_sale` INT COMMENT '是否在售;1:是,0:否',
`spu_id` STRING COMMENT 'spu编号',
`spu_name` STRING COMMENT 'spu名称',
`category3_id` STRING COMMENT '三级分类id',
`category3_name` STRING COMMENT '三级分类名称',
`category2_id` STRING COMMENT '二级分类id',
`category2_name` STRING COMMENT '二级分类名称',
`category1_id` STRING COMMENT '一级分类id',
`category1_name` STRING COMMENT '一级分类名称',
`tm_id` STRING COMMENT '品牌id',
`tm_name` STRING COMMENT '品牌名称',
`sku_attr_values` ARRAY<STRUCT<attr_id:STRING,value_id:STRING,attr_name:STRING,value_name:STRING>> COMMENT '平台属性',
`sku_sale_attr_values` ARRAY<STRUCT<sale_attr_id:STRING,sale_attr_value_id:STRING,sale_attr_name:STRING,sale_attr_value_name:STRING>> COMMENT '销售属性',
`create_time` STRING COMMENT '创建时间'
) COMMENT '商品维度表'
PARTITIONED BY (`dt` STRING)
STORED AS ORC
LOCATION '/warehouse/dw_dwd.db/dim_sku_full/'
TBLPROPERTIES ("orc.compress"="snappy");
msck repair table dim_sku_full;
1.3 ETL任务脚本
[hadoop@hadoop102 ~