-Table内部表
-External Table 外部表
-Partition分区表
-Bucket Table 桶表
内部表
- 表:Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过${HIVE_HOME}/conf/hive-site.xml配置文件中的hive.metastore.warehouse.dir属性来配置,这个属性默认的值是/user/hive/warehouse(这个目录在HDFS上),我们可以根据实际的情况来修改这个配置。
- 如果我有一个表test,那么在HDFS中会创建/user/hive/warehouse/test目录(这里假定hive.metastore.warehouse.dir配置为/user/hive/warehouse);test表所对应的所有数据都存放在这个目录中。
- 如果删除这张表,则表在关系数据中存储的元数据以及在warehouse目录下的数据也会被清除掉、
External Table 外部表
- Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据;而如果你要删除内部表,该表对应的所有数据包括元数据都会被删除。
外部表操作演示:
- 创建外部表(创建的时候得用LOCATION 指定原数据存储的路径,不指定的话hive会在user/hive/warehouse下以外部表的表名创建目录并将数据存储在这里)
创建代码演示:
create EXTERNAL table t_external (year string,month int,num int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/usr/extends';
- 加载数据可用:hdfs dfs -put filename /usr/extends 也可用: hive>load data local
inpath ‘/home/centosm/test/hive’ into table t_external; 执行load
命令之前数据如下所示:
执行load 命令之后: