概述
#hive
启动
hive>quit;
--退出hive
hive> exit;
--exit会影响之前的使用,所以需要下一句kill掉hadoop的进程
>hadoop job -kill jobid
hive>create database database_name; 创建数据库
如果数据库已经存在就会抛出一个错误信息,使用如下语句可以避免抛出错误信息:
hive>creat database if not exists database_name
hive> show databases;
查看数据库
如果数据库比较多的话,也可以用正则表达式来查看:
hive> show databases like 'h.*';
hive> use default;
--使用哪个数据库
hive>show tables;
--查看该数据库中的所有表
hive>show tables
‘*t*’;
--支持模糊查询
hive> describe tab_name;
--查看表的结构及表的路径
hive> describe database database_name;
--查看数据库的描述及路径
可以用下面的命令来修改数据库的路径:
hive> creat database database_name location '路径';
hive> drop database if exists database_name; --删除空的数据库
hive> drop database if exists database_name cascade; --先删除数据库中的表再删除数据库
hive>show partitions t1;
--查看表有哪些分区
修改表:
hive>alter table table_name rename to another_name;
--修改表名
hive>drop table t1 ;
--删除表t1
或者: hive> drop table if exists t1;
hive不支持修改表中数据,但是可以修改表结构,而不影响数据
有local的速度明显比没有local慢:
hive>load data inpath '/root/inner_table.dat' into table t1;
移动hdfs中数据到t1表中
hive>load
data local inpath '/root/inner_table.dat' into table t1;
上传本地数据到hdfs中
hive> !ls;
查询当前linux文件夹下的文件
hive> dfs -ls /; 查询当前hdfs文件系统下
'/'目录下的文件
1.创建表
#建表(默认是内部表)
create table trade_detail(id bigint, account string, income double, expenses double, time string)
row format delimited fields terminated by 't';
#建分区表
#普通表和分区表区别:有大量数据增加的需要建分区表
create table td_part(id bigint, account string, income double, expenses double, time string)
partitioned by (logdate string)
row format delimited fields terminated by 't';
#建外部表
create external table td_ext(id bigint, account string, income double, expenses double, time string)
row format delimited fields terminated by 't' location '/td_ext';
2.加载数据列表
#把本地数据装载到数据表,也就是在metastore上创建信息
load data local inpath '/root/a.txt' into table trade_detail;
#把HDFS上的数据装载到数据表
load data inpath '/target.txt' into table trade_detail;
#加载数据到分区表必须指明所属分区
load data local inpath './book.txt' overwrite into table book
partition (pubdate='2010-08-22');
3.Hive 的shell下可以执行HDFS和Linux命令
在Hive shell下执行hadoop命令行:
#比如:hadoop fs -ls /,在hive下可以这样执行:
hive> dfs -ls /;
在Hive shell下执行linux系统命令:
!cmd;
例如:!pwd;打印当前工作目录
在Hive shell下执行sql文件:
hive> source my.sql;
hive -S 以静默模式启动hive(不打印日志信息,纸打印结果);
hive -e "HiveQL",不进入hive的交互模式,直接执行命令;
当然也可以结合静默模式一起使用:hive -S -e "HiveQL"
4.另外一些常用的命令
#描述表结构
desc tablename;
#查看创建表信息
show create table tablename;
#查看表的分区
show partitions tablename;
基础命令
1
show databases;
#查看某个数据库
2
use 数据库;
#进入某个数据库
3
show tables;
#展示所有表
4
desc 表名
#显示表结构
5
show partitions 表名;
#显示表名的分区
6
show create table_name;
#显示创建表的结构
7
8
#建表语句
9
use xxdb; create table xxx;
#内部表
10
create table xxx like xxx;
#创建一个表,结构与其他一样
create table xxx as xxx;
#创建一个表,结构数据与其他一样,相当于复制一个表
11
use xxdb ;create external table xxx(1 int) partitoned by (d string)
#分区表
12
alter table table-name set TBLPROPROTIES('EXTERNAL'='TURE'); #内部表转外部表
13
alter table table-name set TBLPROPROTIES('EXTERNAL'='FALSE'); #外部表转内部表
14
15
表结构修改
16
use xxxdb; alter table table_name rename to new_table_name;
#重命名表
17
alter table table_name add columns(newscol1 int conment '新增');
#增加字段
18
alter table table_name change col_name new_col_name new_type;
#修改字段
19
alter table table_name replace columns(col1 int,col2 string,col3string);
#删除字段(COLUMNS中只放保留的字段)
20
use xxxdb; drop table table_name;
#删除表
21
22
#删除分区
23
#注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath)
24
alter table table_name drop if exists partitions (d='2016-07-01');
25
#字段类型
26
#tinyint ,smallint,int,bigint,float,decimal,boolean,string
27
#复合数据类型
28
#struct,array,map
复合数据类型
1
#array
2
create table person (name string ,work_locations array<string>)
3
ROW FORMAT DELIMITED
4
FIELDS TERMINATED BY 't'
5
COLLECTION ITEMs TERMINATED BY ','
最后
以上就是风趣楼房为你收集整理的HIve常用命令的全部内容,希望文章能够帮你解决HIve常用命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复