📅  最后修改于: 2020-12-03 03:44:42             🧑  作者: Mango
在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 delimited
fields terminated by ',' ;
在此,命令还包括以下信息:数据用“,”分隔。
hive> describe demo.employee
在这种情况下,会发生异常。如果要忽略这种类型的异常,可以在创建表时使用if not exist命令。
hive> create table if not exists demo.employee (Id int, Name string , Salary float)
row format delimited
fields terminated by ',' ;
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> describe new_employee;
hive> create table if not exists demo.copy_employee
like demo.employee;
在这里,我们可以说新表是现有表的副本。
外部表使我们可以在外部创建和访问表和数据。 external关键字用于指定外部表,而location关键字用于确定已加载数据的位置。
由于该表是外部表,因此Hive目录中不存在数据。因此,如果我们尝试删除该表,该表的元数据将被删除,但是数据仍然存在。
要创建一个外部表,请按照以下步骤操作:-
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';
select * from emplist;