数据库操作
创建数据库
create database 数据库名;
创建数据库并指定HDFS存储位置
create database 数据库名 location 'HDFS路径';
删除空数据库
drop database 数据库名;
删除非空数据库
drop database 数据库名 cascade;
查看数据库基本信息
desc database 数据库名;
查看数据库更多详细信息
desc database extended 数据库名;
数据表操作
普通表
创建表并指定字段之间的分隔符
create table 表名(字段名 字段类型,字段名 字段类型)
row format delimited fields terminated by '分隔符';
根据查询结果创建表
create table 表名 as select * from 表名;
根据已经存在的表结构创建表
create table 表名 like 表名;
查询表的基本信息
desc 表名;
查询表的类型
desc formatted 表名;
从本地文件系统向表中加载数据
load data local inpath '本地文件路径' into table 表名;
从本地文件系统向表中加载数据并覆盖已有数据
load data local inpath '本地文件路径' overwrite into table 表名;
从HDFS向表中加载数据
load data inpath 'HDFS路径' into table 表名;
从HDFS向表中加载数据并覆盖已有数据
load data inpath 'HDFS路径' overwrite into table 表名;
分区表
创建分区表
create table 表名(字段名 字段类型,字段名 字段类型)
partitioned by (字段名 字段类型,字段名 字段类型
row format delimited fields terminated by '分隔符';
从本地加载数据到分区表
load data local inpath '本地路径' into table 表名
partition(分区字段='XXX',分区字段='XXX',分区字段='XXX');
多分区联合查询
select * from 表名 where 分区字段='XXX'
union all
select * from 表名 where 分区字段='XXX';
查看分区
show partitions 表名;
添加分区
alter table 表名 add partition(分区字段='XXX') partition(分区字段='XXX');
删除分区
alter table 表名 drop partition(分区字段='XXX');
分桶表
开启hive的桶表功能
set hive.enforce.bucketing=true;
设置reduce的个数
set mapreduce.job.reduces=个数;
创建桶表
create table 表名(字段名 字段类型,字段名 字段类型)
clustered by(分桶字段) into 分桶个数 buckets
row format delimited fields terminated by '分隔符';
向桶表中加载数据
insert overwrite table 桶表名 select * from 普通表名 cluster by(分桶字段);
其他表操作
重命名
alter table 旧表名 rename to 新表名;
添加字段
alter table 表名 add columns (字段名 字段类型);
更改字段类型
alter table 表名 change column 字段名 字段类型;
清空内部表数据
truncate table 表名;
修复表
msck repair table 表名;
导出表到本地
insert overwrite local directory '本地路径' select * from 表名;
导出表到HDFS
insert overwrite directory 'HDFS路径' select * from 表名;