Hive创建表

hive采用关键字CREATE TABLE来创建一个新的表结构。hive create table的语法和sql语句当中类似,但是hive增加了一些特殊的语法,比如定义表数据文件存储位置,采用什么格式存储等等。


Hive create table 语法结构:

CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] table_name
    [ ( col_name1[:] col_type1 [ COMMENT col_comment1 ], ... ) ]
    [ COMMENT table_comment ]
    [PARTITIONED BY (col_name data_type [COMMENT 'col_comment'], ...)]
    [CLUSTERED BY (col_name, col_name,.......]
    [ ROW FORMAT row_format ]
    [ STORED AS file_format ]
    [ LOCATION path ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
    [ AS select_statement ]

语法解析:[ ]表示可选选项

  • table_name:指定一个要创建的表名,也可以指定表对应的数据库名,如下: [ database_name. ] table_name。

  • EXTERNAL:不使用此项,表示表存储的位置是默认位置,使用此项表示创建外部表,要采用下面LOCATION指定的存储文件路径。

  • col_name:指定表中列的名字。

  • col_type:指定列的类型。

  • COMMENT table_comment:指定表的注释。
  • PARTITION BY:用于创建分区数据。使用它可以提高查询性能。

  • CLUSTERED BY :将数据划分为特定数量的桶。

  • row format:指定输入和输出的行格式。

  • STORED AS file_format:表存储的文件格式,可以是 TEXTFILE、ORC、PARQUET 等。

  • LOCATION path:指定存储表数据的目录的路径,可以是Hdfs上的路径。

  • TBLPROPERTIES:用于标记表定义的键值对列表。

  • AS select_statement:该表创建时,使用 select 查询语句中的数据进行填充的。


例1、创建一个简单的学生信息表:

CREATE TABLE stuinfo( 
    idnumber STRING,
    basicinfo STRUCT<name:STRING,sex:STRING,age:INT>,
    score MAP<STRING, INTEGER>     
)
COMMENT '学生信息表'
TBLPROPERTIES ('creator'='freeit');

Hive创建表(create table)


hive查看表结构:

describe extended 表名;

hive可以通过describe 关键字查看创建的表结构。