欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive内部表与外部表,数据导入,数据导出

程序员文章站 2022-05-09 13:09:25
...

区别

1,内部表数据由Hive自身管理,外部表数据由HDFS管理

2,删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;

3,内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse);  外部表数据的存储位置由
     自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,
     并将属于这个表的数据存放在这里);
 

创建方式

内部表:(默认)

create  table tb_user(
uid string ,
name string ,
gender string ,
age int 
)  
row format delimited fields terminated  by "," 
location "/test/";  --指定HDFS中的文件夹

 

外部表:(external)

create external table tb_user2(
uid string ,
name string ,
gender string ,
age int 
)  
row format delimited fields terminated  by "," 
location "/test/";

 

关键字

location  :指定表在HDFS上的存储位置。

在建表的时候没有使用location关键字 ,表的默认目录在HDFS上的配置只hive.metastore.warehouse.dir的数据库文件夹中:

Hive内部表与外部表,数据导入,数据导出

直接将文件数据上传到该表目录下即可查询

 

导入数据

1,导入本地数据(load)

load data local inpath "本地结构化文件的路径" into table tb_name ;

2,导入HDFS数据 (会将文件剪切到表的工作目录下)

load data inpath "本地结构化文件的路径" into table tb_name ;

3,覆盖导入(overwrite)

load data local inpath "" overwrite into table  tb_name ;

4,insert导入 

   //手动插入

insert into  tb_name  valeus () , () ,() ,()

   //查询其他表的数据追加

insert into  tb_name  select .... 将后面的select运算结果保存到某个表中

  //查询其他表的数据覆盖

insert overwrite table tb_name select ....

insert 语法 不要一条一条数据的insert  因为一次insert在HDFS中生成一个小文件

5,create as  将结果数据直接保存在一个新的表中  

    create table if not exists  tb_phone  
    as select *  from tb_product where cate = '手机' ;

6,import  一定是导出的数据才能导入

导出数据到HDFS中
export table tb_product to
 '/user/hive/warehouse/export/product';
 
导入数据方式
import table tb_product2  from
 '/user/hive/warehouse/export/product';

 

 

 

相关标签: Hive hive