2.5 Hive中外部表的讲解

一、外部表

1、hive中表的类型

管理表

托管表(外部表)

#内部表
>内部表也称之为MANAGED_TABLE;
>默认存储在/user/hive/warehouse下,也可以通过location指定;
>删除表时,会删除表数据以及元数据;


外部表
>外部表称之为EXTERNAL_TABLE;
>在创建表时可以自己指定目录位置(LOCATION);
>删除表时,只会删除元数据不会删除表数据;
Managed Table

这种表也被称作Internal Table.这是Hive中的默认的类型.如果你在创建表的时候没有指明Managed或者External,
那么默认就会给你创建Managed Table.
Managed Table的数据,会存放在HDFS中的特定的位置中,通常
是/user/hduser/hive/warehouse.当然,也不一定,看你的Hive的配置文件中是如何配置的.


External Table
External Table特别适用于想要在Hive之外使用表的数据的情况,比如多个部门想使用一个表的数据;


查看表的类型:

hive (default)> desc formatted dept ;    #查看其中的 Table Type字段


2、创建一个外部表

hive (default)> create EXTERNAL table IF NOT EXISTS default.emp_ext(
              > empno int,
              > ename string,
              > job string,
              > mgr int,
              > hiredate string,
              > sal double,
              > comm double,
              > deptno int
              > )
              > ROW FORMAT DELIMITED FIELDS TERMINATED BY '	';
OK
Time taken: 0.032 seconds


二、例子

1、创建一个外部表

hive (default)> 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/root/hive/warehouse/emp_ext2';
OK
Time taken: 0.036 seconds


2、copy数据

表结构定义好,数据直接放到表的目录下面就可以;

#直接put到HDFS里面
hive (default)> dfs -put /opt/datas/emp.txt /user/root/hive/warehouse/emp_ext2;

hive (default)> dfs -ls -R /user/root/hive/warehouse/emp_ext2;
-rw-r--r--   1 root supergroup        659 2019-04-22 16:33 /user/root/hive/warehouse/emp_ext2/emp.txt


#查询
hive (default)> select * from default.emp_ext2;
OK
emp_ext2.empno    emp_ext2.ename    emp_ext2.job    emp_ext2.mgr    emp_ext2.hiredate    emp_ext2.sal    emp_ext2.comm    emp_ext2.deptno
7369    SMITH    CLERK    7902    1980-12-17    800.0    NULL    20
7499    ALLEN    SALESMAN    7698    1981-2-20    1600.0    300.0    30
7521    WARD    SALESMAN    7698    1981-2-22    1250.0    500.0    30
7566    JONES    MANAGER    7839    1981-4-2    2975.0    NULL    20
7654    MARTIN    SALESMAN    7698    1981-9-28    1250.0    1400.0    30
7698    BLAKE    MANAGER    7839    1981-5-1    2850.0    NULL    30
7782    CLARK    MANAGER    7839    1981-6-9    2450.0    NULL    10
7788    SCOTT    ANALYST    7566    1987-4-19    3000.0    NULL    20
7839    KING    PRESIDENT    NULL    1981-11-17    5000.0    NULL    10
7844    TURNER    SALESMAN    7698    1981-9-8    1500.0    0.0    30
7876    ADAMS    CLERK    7788    1987-5-23    1100.0    NULL    20
7900    JAMES    CLERK    7698    1981-12-3    950.0    NULL    30
7902    FORD    ANALYST    7566    1981-12-3    3000.0    NULL    20
7934    MILLER    CLERK    7782    1982-1-23    1300.0    NULL    10
Time taken: 0.029 seconds, Fetched: 14 row(s)
原文地址:https://www.cnblogs.com/weiyiming007/p/10751108.html