hive与hbase关联表的创建,外表方式

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

时间: 2024-10-10 22:57:08

hive与hbase关联表的创建,外表方式的相关文章

hive与hbase关联表

关于 hbase 和 hive 关联表 详细介绍: hive 创建 关联hbase表有2种形式: 第一种:hive> create table hive(id string,name string, age int) > stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' > with serdeproperties ("hbase.columns.mapping" = ":key,cf:

创建hive整合hbase的表总结

[Author]: kwu 创建hive整合hbase的表总结,如下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_company_content(key string comment "流水号", news_id string comment "新闻id", news_content string comment "文章内容") STORED BY 'org.apache.ha

Oracle中关联表的视图创建

这几天的工作基本上没有了比较的新的技术点,就是反反复复的修改需求,修改Bug--当然,也是到了此刻,自己猜觉得在一个庞大的项目中,需求分析的重要性,以及需求说明书的重要性.我们在需求模糊.文档缺乏的条件下,反复修改功能已经成了家常便饭,今天领导说这个功能应该这样,我们就要立刻改到这样,第二天领导说又要原来的那样,我们只能再改回去了--有时候,我们也曾调侃自己是典型的面向领导开发-- 今天没有什么比较新的技术点来总结了,自己回顾了一下,这几天的工作,发现在关联表中创建视图的时候对于连接不是特别熟悉

hive存储处理器(StorageHandlers)以及hive与hbase整合

此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hive/StorageHandlers 2.https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 一 存储处理器介绍 通过HIVE存储处理器,不但可以让hive基于hbase实现,还可以支持cassandra JDBC MongoD

Hive整合HBase——通过Hive读/写 HBase中的表

写在前面一: 本文将Hive与HBase整合在一起,使Hive可以读取HBase中的数据,让Hadoop生态系统中最为常用的两大框架互相结合,相得益彰. 写在前面二: 使用软件说明 约定所有软件的存放目录: /home/yujianxin 一.Hive整合HBase原理 Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-0.9.0.jar工具类,如下图 Hive与HBase通信示意图 二.具体步骤 安装前说明 1.关

【解决】hive与hbase表结合级联查询的问题

[Author]: kwu [解决]hive与hbase表结合级联查询的问题,hive两个表以上,关联查询时出现长时无法返回的情况.同时也不出现,mr的进度百分比. 查询日志如图所示: 解决这个问题,需要修改配置 set hive.auto.convert.join = false; 或者 <property> <name>hive.auto.convert.join</name> <value>false</value> </proper

hive中与hbase外部表join时内存溢出(hive处理mapjoin的优化器机制)

与hbase外部表(wizad_mdm_main)进行join出现问题: CREATE TABLE wizad_mdm_dev_lmj_edition_result as select * from  wizad_mdm_dev_lmj_20141120 as w JOIN wizad_mdm_main as a ON (a.rowkey = w.guid); 程序启动后,死循环,无反应.最后在进行到0.83时,内存溢出失败. 原因: 默认情况下,Hive会自动将小表加到DistributeCa

oracle 创建临时表空间、用户表空间、创建用户关联表空间、授权等总结

1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\10.1.0\oradata\orcl\test_temp01.dbf' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 一般从第二步开始就可以 2.创建用户表空间 CREATE TABLESPACE gzjssapce LOGGING DATAFILE

从关联表创建数据库

先从关联表导出代码,再使用代码创建数据表 在MySQL Workbench中,使用file->Export ->Forward Engineer SQL Script ->Omit Schema Qua.....->next->export mysql table objects ->next即可得到代码