內部表&外部表
未被external修飾的是內部表(managed table),被external修飾的爲外部表(external table);
區別:
內部表數據由Hive自身管理,外部表數據由HDFS管理;
內部表數據存儲的位置是hive.metastore.warehouse.dir(默認:/user/hive/warehouse),外部表數據的存儲位置由自己制定;
刪除內部表會直接刪除元數據(metadata)及存儲數據;刪除外部表僅僅會刪除元數據,HDFS上的文件並不會被刪除;
對內部表的修改會將修改直接同步給元數據,而對外部表的表結構和分區進行修改,則需要修復(MSCK REPAIR TABLE table_name;)
外部表
CREATE EXTERNAL TABLE IF NOT EXISTS default.emp_ext2(
empno int,ename string,job string,mgr int,hiredate string,sal double,comm double,deptno int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/hive/hData/emp_ext2';
放入數據:
hive (default)> dfs -put /home/wql/app/hData/emp.txt /user/hive/hData/emp_ext2;