创建表
1.语法结构:
详情请参见:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualD
DL-CreateTable
2、 建表语句相关解释
CREATE TABLE:创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用 户可以用 IF NOT EXISTS 选项来忽略这个异常。
EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的 路径(LOCATION), 如果不存在,则会自动创建该目录。Hive 创建内部表时,会将数据 移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置 做任何改变。
在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删 除数据。(经典面试问题)
外部表和内部表的选择:
1、 如果数据已经存储在 HDFS 上了,然后需要使用 Hive 去进行分析,并且该份数据还 有可能要使用其他的计算引擎做计算之用,请使用外部表
2、 如果一份数据仅仅只是使用 Hive 做统计分析,那么可以使用内部表
不管使用内部表和外部表,表的数据存储路径都是可以通过 location 指定的!!!!!! 推荐方式:
1、 创建内部表的时候,最好别指定 location,就存储在默认的仓库路径
2、 如果要指定外部路径,那么请创建该表为外部表