当前位置:   article > 正文

Hive的基本操作(三)_hive创建外部表并指定存储位置

hive创建外部表并指定存储位置

Hive的基本操作(三)

 

1.DDL操作

Hive的hql语句支持SQL一般语法,大致与SQL相似。

SQL语言包括四种主要程序设计语言类别的语句:

数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事物控制语言(TCL)

DDL(Data Definitition Language):数据库模式定义语言

1.1.库操作

1.创建库:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name

[COMMENT database_comment]  //创建库带注释

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, ...)]; //创建库指定属性

create databases dbname;   /  create databases if not exists dbname;

创建库的时候带注释:create database if not exists dbname comment 'create my db named dbname';

创建带属性的库 create database if not exists dbname with dbproperties ('a'='aaa','b'='bbb');

2.查看库

查看所有库:show databases;

显示数据库的详细属性信息 语法:desc database [extended] dbname;

查看正在使用哪个库:select current_database();

3.删除库

删除库操作: drop database dbname;      /  drop database if exists dbname;

*默认情况下,hive 不允许删除包含表的数据库,有两种解决办法

1、 手动删除库下所有表,然后删除库

2、 使用 cascade 关键字 drop database if exists dbname cascade;

默认情况下就是 restrict drop database if exists myhive ==== drop database if exists myhive restrict

4.切换库操作: 语法:use database_name

1.2.表操作

1.创建表

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name

[(col_name data_type [COMMENT col_comment], ...)]

[COMMENT table_comment]

[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]

[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 

 [ROW FORMAT row_format] //指定分隔符

[STORED AS file_format]  

[LOCATION hdfs_path]    //指定表的数据存储路径 

语法解析:

默认建表为内部表 ,加关键字EXTERNAL,新建为外部表,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删 除数据。(ps:公共数据一般都是用外部表)

表的数据存储路径都是可以通过 location 指定的!!!!!!

推荐方式: 1、 创建内部表的时候,最好别指定 location,就存储在默认的仓库路径 2、 如果要指定外部路径,那么请创建该表为外部表

PARTITIONED BY:建分区表关键字

CLUSTERED BY :建分桶表关键字  [SORTED BY (col_name [ASC|DESC], ...)]  指定每个桶的排序规则INTO num_buckets BUCKETS]  分的桶的个数 

[ROW FORMAT row_format] 指定分割符

列分割符:fields terminated by ' , ' 

行分割符:lines terminated by ' , '

元素分割符:items terminated by ' , '

[STORED AS file_format]  指定表中读取文件的类型 默认 textfile

textfile 文本格式    rcfile 行列存储相结合的存储方式   sequencefile 二进制文件格式

LOCATION:指定数据文件存放的 HDFS 目录,不管内部表还是外表,都可以指定。不指 定就在默认的仓库路径。

最佳实践: 如果创建内部表请不要指定 location 如果创建表时要指定 location,请创建外部表。

列举四个类型表的建表示例:

内部表:

create table if not exists student(id int,name string,sex string,age int,department string) row format delimited fields terminated by ',' STORED as textfile ; //若指定了hdfs存储路径,则会覆盖配置文件中默认设置的目录路径

外部表:

create external table if not exists student_ext(id int,name s

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/692407
推荐阅读
相关标签
  

闽ICP备14008679号