hive建立内部表映射hbase_hive与hbase关联表的创建,外表方式

本文介绍了如何在Hive中创建内部表和外部表,以及它们的区别。通过示例展示了数据导入和删除操作,强调了删除内部表会移除数据,而外部表仅删除元数据。建议根据数据管理需求选择使用内部表或外部表。
摘要由CSDN通过智能技术生成

1.在Hive里面创建一个表:

hive> create table wyp(id int,

> name string,

> age int,

> tele string)

> ROW FORMAT DELIMITED

> FIELDS TERMINATED BY ‘\t‘

> STORED AS TEXTFILE;

OK

Time taken: 0.759 seconds

2.这样我们就在Hive里面创建了一张普通的表,现在给这个表导入数据:

load data local inpath ‘/home/wyp/data/wyp.txt‘ into table wyp;

3.创建外部表多了external关键字说明以及location ‘/home/wyp/external’

hive> create external table exter_table(

> id int,

> name string,

> age int,

> tel string)

> location ‘/home/wyp/external‘;

OK

Time taken: 0.098 seconds

创建外部表,需要在创建表的时候加上external关键字,同时指定外部表存放数据的路径(当然,你也可以不指定外部表的存放路径,这样Hive将 在HDFS上的/user/hive/warehouse/文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里)

外部表导入数据和内部表一样:load data local inpath ‘/home/wyp/data/wyp.txt‘ into table exter_table;

==================================================

CREATE EXTERNAL TABLE hivebig (key string,CUST_NAME string,PHONE_NUM int,BRD_WORK_FLUX double)

STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,bd:CUST_NAME,bd:PHONE_NUM#b,bd:BRD_WORK_FLUX#b")

TBLPROPERTIES ("hbase.table.name" = "bigtable2");

https://blog.csdn.net/jameshadoop/article/details/42162669

==================================================

4.和上面的导入数据到表一样,将本地的数据导入到外部表,数据也是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中,但是,最后 数据不是移动到外部表的/user/hive/warehouse/exter_table文件夹中(除非你创建表的时候没有指定数据的存放路径)!大家 可以去HDFS上看看!对于外部表,数据是被移动到创建表时指定的目录(本例是存放在/home/wyp/external文件夹中)!

5.内部表删除

hive> drop table wyp;

Moved: ‘hdfs://mycluster/user/hive/warehouse/wyp‘ to

trash at: hdfs://mycluster/user/hdfs/.Trash/Current

OK

Time taken: 2.503 seconds

如果你要删除外部表:drop table exter_table;

hive> drop table exter_table;

OK

Time taken: 0.093 seconds

和上面删除Hive的表对比可以发现,没有输出将数据从一个地方移到任一个地方!那是不是删除外部表的的时候数据直接被删除掉呢?答案不是这样的,你会发现删除外部表的时候,数据并没有被删除,而只是删除了元数据,这是和删除表的数据完全不一样的

总结:

1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的,而表则不一样;

2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建内部表,否则使用外部表!

原文:https://www.cnblogs.com/duanxz/p/9010640.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值