hive sql ddl

数据库

数据库,仅仅是表的一个目录、命名空间,如果没有指定则默认使用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来对数据进行分区,会改变数据存储的组织方式

表的存储格式

    原文作者:xncode
    原文地址: https://www.jianshu.com/p/653db03cded1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞