Hive SQL使用指南(1)——数据库操作 2015-05-05 12:00

使用beeline连接HiveServer

  • 启动beeline:
bin/beeline --color=true --fastConnect=true
  • 连接到服务端:
!connect jdbc:hive2://ctrl:10000

例如:

[root@cheyo hive]# bin/beeline --color=true --fastConnect=true
Beeline version 1.0.0 by Apache Hive
beeline> !connect jdbc:hive2://ctrl:10000
scan complete in 13ms
Connecting to jdbc:hive2://ctrl:10000
Enter username for jdbc:hive2://ctrl:10000: root
Enter password for jdbc:hive2://ctrl:10000:
  • 一步到位启动beeline直接连接:
bin/beeline --color=true --fastConnect=true -u jdbc:hive2://ctrl:10000
# 指定用户名登录
bin/beeline --color=true --fastConnect=true -u jdbc:hive2://ctrl:10000 -n root -p ""

使用HiveCLI(不推荐)连接HiveServer

  • 备注

此HiveCLI已经不推荐使用,因此只支持单用户操作。

bin/hive

系统配置(仅对HiveCLI有效)

1
2
3
4
/* 显示当前数据库: */
set hive.cli.print.current.db=true;
/* 显示表格列头:*/
set hive.cli.print.header=true;

数据库操作

  • 查询数据库列表
0: jdbc:hive2://ctrl:10000> SHOW DATABASES;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| test           |
+----------------+--+
  • 使用通配符查询数据库列表
0: jdbc:hive2://ctrl:10000> SHOW DATABASES LIKE 'tes.*';
+----------------+--+
| database_name  |
+----------------+--+
| test           |
| test2          |
+----------------+--+
  • 创建数据库
1
2
3
4
CREATE DATABASE test;
CREATE DATABASE IF NOT EXISTS test;
/*创建表时添加注释,注释会出现在DESCRIBE DATABASE DbName结果中。*/
CREATE DATABASE test COMMENT 'my first hive db';
  • 删除数据库

删除数据库的时候,不允许删除有数据的数据库,如果数据库里面有数据则会报错。如果要忽略这些内容,则在后面增加CASCADE关键字,则忽略报错,删除数据库。

1
2
3
DROP DATABASE test2;
DROP DATABASE test CASCADE;
DROP DATABASE IF EXISTS test3 CASCADE;
  • 查询数据库详细信息
0: jdbc:hive2://ctrl:10000> DESCRIBE DATABASE test;
+----------+----------+-----------------------------------------------+-------------+-------------+
| db_name  | comment  |                   location                    | owner_name  | owner_type  |
+----------+----------+-----------------------------------------------+-------------+-------------+
| test     |          | hdfs://ctrl:9000/user/hive/warehouse/test.db  | root        | USER        |
+----------+----------+-----------------------------------------------+-------------+-------------+
1 row selected (0.253 seconds)
0: jdbc:hive2://ctrl:10000>
  • 切换当前使用的数据库
1
USE test;

备注

在"database"相关命令行可以使用"schema"代替"database"。

数据库存储路径

  • 默认存储路径

Hive为每个数据库创建一个路径,表在被存储在相应的子路径中。默认的"default"的数据库没有自己的路径;数据库的路径这个属性中设置:hive.metastore.warehouse.dir,其中默认的属性值是 /user/hive/warehouse。

当数据库test被创建,Hive会为其创建路径为 /user/hive/warehouse/test.db,.db是数据库名的扩展。

0: jdbc:hive2://ctrl:10000> DESCRIBE DATABASE test;
+----------+----------+-----------------------------------------------+-------------+-------------+
| db_name  | comment  |                   location                    | owner_name  | owner_type  |
+----------+----------+-----------------------------------------------+-------------+-------------+
| test     |          | hdfs://ctrl:9000/user/hive/warehouse/test.db  | root        | USER        |
+----------+----------+-----------------------------------------------+-------------+-------------+
1 row selected (0.253 seconds)
0: jdbc:hive2://ctrl:10000>
  • 创建数据库时指定存储路径
1
2
/* 即hdfs://ctrl:9000/user/hive/mytest */
CREATE DATABASE test LOCATION '/user/hive/mytest';
Tags: #Hive    Post on Hadoop