📜  Hive-创建表(1)

📅  最后修改于: 2023-12-03 15:15:32.039000             🧑  作者: Mango

Hive-创建表

在Hive中,表是数据的逻辑表示。表可以通过定义列、表名、分隔符等参数进行创建。本文将详细介绍如何在Hive中创建表。

创建表的语法
CREATE [TEMPORARY] [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, ...)]
参数解析
  • TEMPORARY: 创建一个临时表。
  • EXTERNAL: 创建一个外部表,它是从Hive之外获得的数据的引用,表数据不存储在Hive中。
  • IF NOT EXISTS: 如果已存在同名的表,则不创建该表。
  • table_name: 要创建的表的名称。
  • col_name: 列名。
  • data_type: 列的数据类型。
  • col_comment: 列的注释。
  • table_comment: 表的注释。
  • PARTITIONED BY: 根据指定的列创建分区表。
  • CLUSTERED BY: 根据指定的列对表进行分组。
  • SORTED BY: 根据指定的列对分组进行排序。
  • INTO num_buckets BUCKETS: 将表分成指定数量的桶。
  • row_format: 行格式。
  • file_format: 文件格式。
  • hdfs_path: 是HDFS中数据的存储位置。
  • TBLPROPERTIES: 属性名称和属性值的映射。
示例

下面是创建一个简单的表的示例:

CREATE TABLE IF NOT EXISTS employee (
    employee_id INT,
    name STRING,
    salary FLOAT,
    birthday TIMESTAMP
) COMMENT 'Employee details' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
STORED AS TEXTFILE;

此代码片段创建名为employee的表,该表具有employee_idnamesalarybirthday等四个字段,还定义行格式、分隔符等其他参数。

下面是创建分区表的示例:

CREATE EXTERNAL TABLE IF NOT EXISTS partitioned_employee (
    employee_id INT,
    name STRING,
    salary FLOAT,
    birthday TIMESTAMP
) COMMENT 'Employee details' 
PARTITIONED BY (department STRING, city STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/partitioned_employee';

此代码片段创建名为partitioned_employee的表,该表还具有departmentcity两个分区字段,并且以外部表的形式存在。

结论

本文介绍了在Hive中创建表的语法和参数。使用Hive,您可以轻松地创建适合您的数据需求的表。