数据库
数据库,仅仅是表的一个目录、命名空间,如果没有指定则默认使用default数据库。
create database xx;
create database if not exists xx;
show databases;
show databases like 'h.*'; # 正则
use database;
select current_database();
drop databse xxx;
drop database if exists finacials cascade;
对于hivecli可以设置显示当前数据库名称:
set hive.cli.print.current.db=true;
hive会为每个数据库创建一个目录,是以数据库名称加.db命名的。但是default是没有的,直接在hive目录下。
可以使用location来指定存储路径(除了hdfs还可以使用mapr s3 本地路径等),建议使用comment来加注释
数据表
create table pokes(foo int, bar string);
show tables;
show tables in mydb;
show tables 'empl.*';
describe finacials;
describe formatted finacials;
以上创建的表是内部表,即hive本身是可以管理这些表的。
外部表
create external table xx
location ''
在删除外部表时数据不会被删掉。此外还可以通过内部表生成外部表,这样可以解决一些权限问题?
分区表
通过在创建表时带partitioned by来对数据进行分区,会改变数据存储的组织方式