Hive的使用四种方式
1.在linux中直接输入 : hive -e “select * from tb-user”
2.将sql语句写入脚本文件中,在linux中执行脚本文件: hive -f select.sql
3.本地运行hive,直接输入 : hive
4.远程连接:
4.1 . hiveserver2 --开启远程连接权限
4.2.待出现10000端口号之后,输入beeline
4.3 然后输入!connect jdbc:hive2://linu01:10000
4.4 输入账号root,密码直接回车,即可登录
Hive数据类型
Hive数据类型 Java数据类型 长度 例子
TINYINT byte 1byte有符号整数 20
SMALINT short 2byte有符号整数 20
INT int 4byte有符号整数 20
BIGINT long 8byte有符号整数 20
BOOLEAN boolean 布尔类型, true或者false TRUE FALSE
FLOAT float 单精度浮点数 3.14159
DOUBLE double 双精度浮点数 3.14159
STRING string 字符系列。可以指定字符集。可以使用单引号或者双引号。 ‘now is the time’ “for all good men”
TIMESTAMP 时间类型
BINARY 字节数组
DDL 语言
创建数据库
创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。
hive (default)> create database db_hive;
2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法)
hive (default)> create database db_hive;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists
hive (default)> create database if not exists db_hive;
3)创建一个数据库,指定数据库在HDFS上存放的位置
hive (default)> create database db_hive2 location '/db_hive2.db';
查询数据库
显示数据库
1.显示数据库
hive> show databases;
2.过滤显示查询的数据库
hive> show databases like 'db_hive*';
OK
db_hive
db_hive_1
show databases like '*lt' ;
| default |
查看数据库详情
1.显示数据库信息
hive> desc database db_hive;
OK
db_hive hdfs:/doit01:9000/user/hive/warehouse/db_hive.db
2.显示数据库详细信息,extended
hive> desc database extended db_hive;
OK
db_hive hdfs:/doit01:9000/user/hive/warehouse/db_hive.db
切换当前数据库
hive (default)> use db_hive;
查询当前所在的数据库:
select current_database();
修改数据库
用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。
hive (default)> alter database db_hive set dbproperties('createtime'='20170830');
在hive中查看修改结果
hive> desc database extended db_hive;
db_name comment location owner_name owner_type parameters
db_hive hdfs:/doit01:8020/user/hive/warehouse/db_hive.db root USER {createtime=20170830}
删除数据库
1.删除空数据库
hive>drop database db_hive2;
2.如果删除的数据库不存在,最好采用 if exists判断数据库是否存在
hive> drop database db_hive;
FAILED: SemanticException [Error 10072]: Database does not exist: db_hive
hive> drop database if exists db_hive2;
3.如果数据库不为空,可以采用cascade命令,强制删除
hive> drop database db_hive;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database db_hive is not empty. One or more tables exist.)
hive> drop database db_hive cascade;