一、数据准备
数据来源:数据来源
准备数据,并将数据上传到/opt/bigdatas
二、数据说明
aisles.csv departments.csv order_products__prior.csv order_products__train.csv orders.csv products.csv
aisles 通道 货架的编号 (二级类别) 维度表
aisle_id,aisle
departments 部门 比如厨房类 (一级类别)维度表
department_id,department
orders 订单表 (在hive中属于行为表)
eval_set:prior历史行为,
train训练(test中user已经购买了的其中一个商品),
test(最终我们要预测的数据集,包含哪个用户他可能会购买的商品)
order_number:这个user订单的编号,体现订单的先后顺序
order_dow:(day of week),订单在星期几
order_hour_of_day:一天中的哪个小时(分成24小时)
days_since_prior_order:order_number后面一个订单与前面一个订单相隔天数(注意第一个订单没有)
order_id,user_id,eval_set,order_number,order_dow,order_hour_of_day,days_since_prior_order
order_products__prior(500M) order_products__train
一个订单:订单记录(33120,28985)explode
(在hive中属于行为表)
add_to_cart_order:加购物车的位置
reordered:这个订单是否被再次购买(是否)bool
order_id,product_id,add_to_cart_order,reordered
products 在数据库中(如果落到hive中是维度表)
product_id,product_name,aisle_id,department_id
三、将orders(orders.csv),priors(order_products__prior.csv) 建表
1、可以先在本地目录下查看数据:head orders.csv
查看具体的数据的样子,还有列名
2、启动hadoop集群
3、上传本地数据到hadoop
hadoop fs -mkdir -p /bigdata/orders --在hadoop里新建/bigdata/orders/目录存储orders.csv数据
hadoop fs -put /opt/bigdatas/orders.csv /bigdata/orders/
hadoop fs -ls /bigdata/orders/
4、创建orders外部表 external 表示创建外部表
create external table orders
(
order_id string,
user_id string,
eval_set string,
order_number string,
order_dow string,
order_hour_of_day string,
days_since_prior_order string
)
row format delimited
fields terminated by ','
lines terminated by '\n'
location '/bigdata/orders'
tblproperties ("skip.header.line.count"="1"); -- 由于csv文件第一行为表头,这里数据过滤掉第一行数据
5、创建priors(order_products__prior.csv)外部表
hadoop 上传order_products__prior.csv到 hadoop的/bigdata/priors目录下
hadoop fs -mkdir -p /bigdata/priors
hadoop fs -put /opt/bigdatas/order_products__prior.csv /bigdata/priors
创建priors表
create external table priors
(
order_id string,
product_id string,
add_to_cart_order string,
reordered string
)
row format delimited
fields terminated by ','
lines terminated by '\n'
location '/bigdata/priors'
tblproperties ("skip.header.line.count"="1");