Hive中如何创建内部表和外部表以及它们的区别

来源:互联网 发布:淘宝怎么找以前的订单 编辑:程序博客网 时间:2024/05/22 14:45


1.内部表(也称为管理表)的创建:

create table if not exists student(id int,name string,age int)row  format delimited fields terminated by '\t';

//加载HDFS文件到Hive表中load data inpath '/home/user/hive.txt' into table dept;


if not exists 可加可不加

//用来指定原文件的列分隔符
row  format delimited fields terminated by '\t';
load 如果操作的HDFS上的文件,代表着会移动或者剪切文件


desc formatted dept;  //描述表结构信息
Location:           hdfs://com.qiyu02:8020/user/hive/warehouse/person.db/student 
Table Type:         MANAGED_TABLE


2.外部表的创建

create  external table emp(empno int,empname string,empjob string,mgno int,birthday string,salary float,bonus float,depno int)row  format delimited fields terminated by '\t'location '/input/demo';
//描述表结构
desc formatted emp;
Location:           hdfs://com.qiyu02:8020/input/demo 
Table Type:         EXTERNAL_TABLE 



内部表和外部表的区别:
创建表
外部表创建表的时候,不会移动数到数据仓库目录中(/user/hive/warehouse),只会记录表数据存放的路径
内部表会把数据复制或剪切到表的目录下


删除表
外部表在删除表的时候只会删除表的元数据信息不会删除表数据
内部表删除时会将元数据信息和表数据同时删除
阅读全文
0 0