Hive操作指南


一. 建外部表

create external  table test.test_external(
                id int comment '测试id' , 
                name string comment '测试名称'  )                           
comment '测试'
row format delimited fields terminated by '\t'
stored as textfile
location '/user/hive/warehouse/external';


二. 建表

create table test.test(
                id int comment '测试id' , 
                name string comment '测试名称'  )                           
comment '测试'
row format delimited fields terminated by '\t'
stored as textfile;

备注: hive常用存储文件类型有textfile、parquet、ocr等


三. 建分区表

create table test.test(
                id int comment '测试id' , 
                name string comment '测试名称'  )                           
comment '测试'
partitioned by (dt string comment '分区日期')
row format delimited fields terminated by '\t'
stored as textfile;


四. 建分区分桶表

create table test.test(
    id int comment '测试id' , 
    name string comment '测试名称'  )                           
comment '测试'
partitioned by (dt string comment '分区日期')
clustered by (id) into 5 buckets
row format delimited fields terminated by '\t'
stored as ocr;

五. 更改表名

ALTER TABLE test RENAME TO new_name;

六. 添加列

ALTER TABLE test ADD COLUMNS (col_spec[, col_spec ...])

备注:
 ALTER TABLE test ADD COLUMNS (col_spec[, col_spec ...]) CASCADE;// 加分区表字段需要加上CASCADE ,否则历史分区数据无法被重新写入数据,即便指定该新增列。


七. 更改列名相关

ALTER TABLE test CHANGE column_name new_name new_type;


八. 删除指定列age(原表共有id,name,age列)

ALTER TABLE test REPLACE COLUMNS (id bigint ,name string)

备注:
ALTER TABLE name DROP [COLUMN] column_name     //  DROP column_name为无效语法

九. 复制表结构
① 非分区表:

create table new_table as select * from exists_table where 1=0;

② 分区表:

create table text2 like test;

十. 复制表结构和数据
① 非分区表: 

create table new_table as select * from exists_table;

② 分区表:
方法一:

1.  create table test2 like test;

 注意: 如果使用as在分区表基础上,创建新表,那么得到的为非分区表,得到原表完整结构要用like。
2. hive cmd模式(将HDFS的数据文件复制一份到新表目录):   

 dfs -cp -f /user/hive/warehouse/test.db/test/* /user/hive/warehouse/test.db/test2/

3. hive cmd模式(修复元数据信息):   

MSCK REPAIR TABLE test2;

方法二:

1. create table test2 like test;

动态分区:

2. insert overwrite table test2 partition (dt) select id,name,dt from test;

十一. 删除表

drop table dbname.tname;

十二. 清空表数据
① 内部表(保留表结构):

truncate table dbname.tname;

② 外部表(保留表结构):
1. 进入hue hdfs指定分区删除
2. 用shell脚本删除

#!/bin/bash
temp=$(date +%Y-%m-%d)
temp2=$(date -d "-1 day" +%Y-%m-%d)
hdfs dfs -rm -r /user/hive/test_table/partition_date=${temp}

 

Hive创建内外部表    Hive 复制分区表和数据
Hive修改表1    Hive修改表2    Hive表删除&清空数据

 

你可能感兴趣的:(hive,hadoop,大数据)