Hive-创建表

本文概述

  • 内部表
  • 外部表
在Hive中, 我们可以使用类似于SQL的约定来创建表。在存储表的数据文件时, 它具有广泛的灵活性。它提供两种类型的表:-
  • 内部表
  • 外部表
内部表 内部表也称为托管表, 因为其数据的生命周期由Hive控制。默认情况下, 这些表存储在hive.metastore.warehouse.dir定义的目录(即/ user / hive / warehouse)下的子目录中。内部表不够灵活, 无法与Pig等其他工具共享。如果我们尝试删除内部表, Hive会删除表架构和数据。
  • 让我们使用以下命令创建一个内部表:
hive> create table demo.employee (Id int, Name string , Salary float)row format delimitedfields terminated by ', ' ;

Hive-创建表

文章图片
在此, 命令还包含以下信息:数据用“, ”分隔。
  • 我们使用以下命令查看创建的表的元数据:-
hive> describe demo.employee

Hive-创建表

文章图片
  • 让我们看看尝试再次创建现有表时的结果。
Hive-创建表

文章图片
在这种情况下, 会发生异常。如果我们想忽略这种类型的异常, 我们可以在创建表时使用if not exist命令。
hive> create table if not exists demo.employee (Id int, Name string , Salary float)row format delimitedfields terminated by ', ' ;

Hive-创建表

文章图片
  • 创建表时, 我们可以将注释添加到列中, 也可以定义表属性。
hive> create table demo.new_employee (Id int comment 'Employee Id', Name string comment 'Employee Name', Salary float comment 'Employee Salary')comment 'Table Description'TBLProperties ('creator'='Gaurav Chawla', 'created_at' = '2019-06-06 11:00:00');

Hive-创建表

文章图片
  • 让我们使用以下命令查看创建的表的元数据:-
hive> describe new_employee;

Hive-创建表

文章图片
  • Hive允许通过使用现有表的架构来创建新表。
hive> create table if not exists demo.copy_employeelike demo.employee;

Hive-创建表

文章图片
Hive-创建表

文章图片
在这里, 我们可以说新表是现有表的副本。
外部表 【Hive-创建表】外部表使我们可以在外部创建和访问表和数据。 external关键字用于指定外部表, 而location关键字用于确定已加载数据的位置。
由于该表是外部表, 因此Hive目录中不存在数据。因此, 如果我们尝试删除该表, 该表的元数据将被删除, 但是数据仍然存在。
要创建一个外部表, 请按照以下步骤操作:-
  • 让我们使用以下命令在HDFS上创建目录:-
hdfs dfs -mkdir /HiveDirectory

  • 现在, 将文件存储在创建的目录中。
hdfs dfs -put hive/emp_details /HiveDirectory

  • 让我们使用以下命令创建一个外部表:-
hive> create external table emplist (Id int, Name string , Salary float)row format delimited fields terminated by ', ' location '/HiveDirectory';

Hive-创建表

文章图片
  • 现在, 我们可以使用以下命令来检索数据:-
select * from emplist;

Hive-创建表

文章图片

    推荐阅读