Hive外部表使用 2015-09-14 21:00

说明

如同内部表一样,外部表在创建表时也需要指定数据表所在的数据文件的路径——以下简称为表路径。如果没有指定,Hive会自动分配一个。自动分配的目录是hive主目录下的【表名】目录。

如果创建外部表时,指定表的数据存储目录。Hive会将此目录下已有的所有文件作为表的数据文件,在查询时进行解析。此时,Hive仍会在hive的目录下创建【表名】的目录,但目录内的内容为空。

  • 在LOAD DATA时,如果加载的文件在HDFS上,此文件会被移动到表路径中。
  • 在LOAD DATA时,如果加载的文件在本地,此文件会被复制到HDFS的表路径中。
  • 在LOAD DATA时,会为每一个待导入的文件,启动一个MR任务进行导入。

与内部表不同,外部表在删除时,不会删除表仓库路径下的数据文件。

1
2
3
4
5
6
7
--指定表的仓库路径
CREATE EXTERNAL TABLE student(id STRING, name STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','
LOCATION '/data/student/';
--导入数据到表中(文件会被移动到仓库目录/data/student)
LOAD DATA INPATH '/stu3.txt' INTO TABLE student;
Tags: #Hive    Post on Hadoop