hive教程:建表语句、删表语句

说明

官网

建表语法

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]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]

解释

  • *EXTERNAL:外部的,hive中没有此关键创建的表为管理表
    详见:hive教程:管理表(内部表)和外部表

  • [IF NOT EXISTS]:如果不存在,就创建

  • [(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]:存储文件类型 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)

    • 如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。

    • 如果数据需要压缩,使用 STORED AS SEQUENCEFILE。

  • [LOCATION hdfs_path]:表存储在 HDFS 的位置,默认为当前 数据库 在 HDFS 的路径下

  • [TBLPROPERTIES (property_name=property_value, ...)]:表的自定义属性

  • [AS select_statement]:后跟 select 查询语句的结果建表

删除表

drop table 表名;

例子-管理表

数据文件

创建

vim /program/data.txt

内容如下:

1,李雷
2,韩梅梅
3,lucy

创建管理(内部)表

create table if not exists t_student( id int, name string
)
row format delimited fields terminated by ',';

上传文件

hadoop fs -put /program/data.txt /hive/warehouse/t_student

根据查询结果创建表

(查询的结果会添加到新创建的表中)

create table if not exists t_student2 as select id, name from t_student;

可在 hdfs 中查看 t_student2 的数据文件

根据查询表结构创建表

create table if not exists t_student3 like t_student;

查询表的类型

desc formatted t_student2;

删除表

drop table t_student2;

注意:删除表后,也会删除 hdfs 中的数据文件

例子-外部表

数据文件

vim /program/data.txt

内容如下:

1,李雷
2,韩梅梅
3,lucy

创建外部表

create external table t_teacher( id int, name string
)
row format delimited fields terminated by ',' ;

上传文件

hadoop fs -put /program/data.txt /hive/warehouse/t_teacher

删除表

drop table t_teacher;

删除元数据,不会删除 hdfs 中的数据文件

先有数据文件,后创建表

应用场景:其他部门(其他人)将文件上传到 hdfs 中,需要 我们用 hive 进行查询处理

一般创建 外部表,因为:

  • 建表外部时,可以 指定数据文件路径
  • 使用后 删除表 时,不会删除该数据文件

上传文件:

hadoop fs -put /program/data.txt /school

创建表:

create external table t_teacher( id int, name string)
row format delimited fields terminated by ','
location '/school';

然后通过 select 等语句进行查询分析


原文出处:/show_1IXkp0JLer7.html