一、 创建表
1)创建外部表
CREATE EXTERNAL TABLE ad_rule_result(
source string COMMENT '',
entity_type int COMMENT '')
PARTITIONED BY(day string,hour string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION 'hdfs://mycluster/user/vc/public/ad_rule_result';
2)创建内部表:
CREATE TABLE dw.zjmj_only_refund_money_risk_result_df(
buyer_id string COMMENT '买家ID',
refund_order_count int COMMENT '仅退款订单数',
order_count int COMMENT '有效订单数',
refund_order_rate float COMMENT '仅退款订单占比',
solar_name string COMMENT '处罚名',
day string COMMENT ''
) COMMENT '仅退款规则命中的买家'
LOCATION 'hdfs://user/hive/warehouse/dw.db/zjmj_only_refund_money_risk_result_df'
3)从老表中复制一个表结构出来
create table if not exists temp.ad_rule_result like vc.ad_rule_result
4)备份表
create table temp.ad_rule_result_2 as
SELECT * FROM vc.ad_rule_result
二、删除数据
1)删除表
DROP TABLE IF EXISTS dw.zjmj_only_refund_money_risk_result_df
2)删除某个分区
ALTER TABLE vc.ad_rule_result DROP PARTITION (day='2020-08-10' , hour='21')
3)清空表中数据
truncate table vc.ad_rule_result
三、插入数据
1)从文件中插入数据到hive表中
load data inpath '/user/vc/xxx/part-00001_test' into table vc.ad_rule_result partition(day='2020-08-10',hour='01')
2)将查询到的数据插入表中
insert overwrite table dw.zjmj_only_refund_money_risk_result_df
select * from dw.zjmj_only_refund_money_risk_result_df where day !='2020-07-30'
3)将查询到的数据插入到某个分区(根据数据大小进行小文件合并)
set mapred.max.split.size=256000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
insert overwrite table vc.ad_rule_result partition(day='2020-08-10', hour='17')
select source,entity_type, entity_id, rule, hit_time, feature from vc.ad_rule_result where day='2020-08-10' and hour='17';
四、 修改表
1)删除某列
hive 没有删除字段的命令,但是可以用replace 来实现
alter table vc.ad_rule_result_back replace columns(
source string COMMENT '',
entity_type int COMMENT '',
entity_id string COMMENT '',
rule string COMMENT '',
hit_time bigint COMMENT '',
feature string COMMENT '');
- 添加一个列
alter table vc.ad_rule_result add columns(mark string)
3)更改表名
ALTER TABLE table_name RENAME TO new_table_name;
五、查看表信息
1)查看建表语句
show create table test.stu
2)查看表的结构
desc table test.stu
3)查看表的分区列表
show partitions test.stu