Hive内部表和外部表
- hive创建内部表
hive> CREATE TABLE hT1(id INT,name STRING,hobby ARRAY<STRING>,address MAP<STRING,STRING>)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> COLLECTION ITEMS TERMINATED BY '-'
> MAP KEYS TERMINATED BY ':';
OK
Time taken: 0.22 seconds
hive> show tables;
OK
ht1
Time taken: 0.066 seconds, Fetched: 1 row(s)
说明:每一行的数据定义为’,’来分割,Collection的条目以’-’来分割,Map的条目以’:’来分割。
可以看到表已经创建成功了。
去WEB UI中查看
加载数据:
- 准备数据
id,name,hobby,address
1,张三,篮球-足球-音乐,北京:上海
2,李四,看书-旅游-爬山,西安:成都
3,王五,钢琴-小提琴-古筝,重庆:杭州
4,赵六,抽烟-喝酒-烫头发,哈尔滨:沈阳
- 加载数据
hive> LOAD DATA LOCAL INPATH '/root/data/hdata1' INTO TABLE ht1;
Loading data to table default.ht1
Table default.ht1 stats: [numFiles=1, totalSize=207]
OK
Time taken: 2.362 seconds
说明: local代表数据来自与本地磁盘,如果是来自hdfs的话,则去掉local。
查看ht1表中的数据:
hive> select * from ht1;
OK
NULL name ["hobby"] {"address":null}
1 张三 ["篮球","足球","音乐"] {"北京":"上海"}
2 李四 ["看书","旅游","爬山"] {"西安":"成都"}
3 王五 ["钢琴","小提琴","古筝"] {"重庆":"杭州"}
4 赵六 ["抽烟","喝酒","烫头发"] {"哈尔滨":"沈阳"}
Time taken: 0.752 seconds, Fetched: 5 row(s)
同样可以用hadoop命令查看hdfs上的这些数据:
[root@unisk01 ~]# hadoop fs -cat /user/hive/warehouse/htest.db/ht1/*
id,name,hobby,address
1,张三,篮球-足球-音乐,北京:上海
2,李四,看书-旅游-爬山,西安:成都
3,王五,钢琴-小提琴-古筝,重庆:杭州
4,赵六,抽烟-喝酒-烫头发,哈尔滨:沈阳
- 创建外部表
hive> CREATE EXTERNAL TABLE hET1(id INT,name STRING,hobby ARRAY<STRING>,address MAP<STRING,STRING>)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> COLLECTION ITEMS TERMINATED BY '-'
> MAP KEYS TERMINATED BY ':'
> LOCATION '/hive/external/hET1';
OK
Time taken: 0.299 seconds
hive> desc formatted hET1;
OK
# col_name data_type comment
id int
name string
hobby array<string>
address map<string,string>
# Detailed Table Information
Database: default
Owner: root
CreateTime: Sat Aug 04 09:56:19 CST 2018
LastAccessTime: UNKNOWN
Protect Mode: None
Retention: 0
Location: hdfs://mycluster/hive/external/hET1
Table Type: EXTERNAL_TABLE
Table Parameters:
EXTERNAL TRUE
transient_lastDdlTime 1533347779
# Storage Information
SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat: org.apache.hadoop.mapred.TextInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Compressed: No
Num Buckets: -1
Bucket Columns: []
Sort Columns: []
Storage Desc Params:
colelction.delim -
field.delim ,
mapkey.delim :
serialization.format ,
Time taken: 0.156 seconds, Fetched: 33 row(s)
说明:创建表时加上一个External字段,意思是外部表,并且最后加上Location用来指定外部表存放目录。通过查看表格式的命令,可以查看详细的内容。
查看WEB UI发现外部表的数据并没有在hive自己仓库的目录下
外部表和内部表的区别:
它两主要区别在于LOAD和DROP这两个命令语义上:
内表使用load命令会把数据移到自己仓库目录下
外表使用load命令会把数据移到自己仓库以外的位置
内表使用drop命令会把元数据和数据一起删除(这也就是为什么内表也叫托管表)
外表使用load命令只会删除元数据
到底该选择哪一种方式呢?
有一个经验法则:
如果所有处理都由hive完成,应使用内表
如果要用hive和其他工具来处理同一个数据集应该使用外表
经常的使用场景:
把存在HDFS上的初始数据集用作外部表进行使用,然后用hive的变换功能把数据迁移到托管hive的表。
所以我们试着删除外部表:
hive> drop table hET1;
OK
Time taken: 0.206 seconds
hive> show tables;
OK
ht1
Time taken: 0.063 seconds, Fetched: 1 row(s)
hive>
然后去HDFS目录中查看
[root@unisk01 ~]# hadoop fs -cat /hive/external/tET1/*
id,name,hobby,address
1,张三,篮球-足球-音乐,北京:上海
2,李四,看书-旅游-爬山,西安:成都
3,王五,钢琴-小提琴-古筝,重庆:杭州
4,赵六,抽烟-喝酒-烫头发,哈尔滨:沈阳
[root@unisk01 ~]#
的确数据依然存在,那么再看一下删除内部表:
去WEB UI查看,也的确看到这个数据文件依然存在
hive> drop table ht1;
OK
Time taken: 2.05 seconds
hive> show tables;
OK
Time taken: 0.05 seconds
hive>
然后去HDFS目录中查看:
发现htest.db库下已经没有ht1表了。
Hive内部表和外部表相关推荐
- hive内部表与外部表区别
1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表的区别是什么? 4.删除表的时候,内部表与外部表有什么区别? 5.load data local in ...
- 六、Hive中的内部表、外部表、分区表和分桶表
文章目录 内部表 外部表 分区表 分桶表 在Hive数据仓库中,重要点就是Hive中的四个表.Hive 中的表分为内部表.外部表.分区表和分桶表. 内部表 默认创建的表都是所谓的内部表,有时也被称为管 ...
- Hive 内部表与外部表
首先查看当前的表: 内部表 查看emp表: 查看这个emp表的详细信息: 可以看到Table Type是一个MANAGED_TABLE,就是所谓的内部表 内部表跟外部表有什么区别 首先看一下mysql ...
- hive 创建表_2min快速了解,Hive内部表和外部表
在了解内部表和外部表区别前, 我们需要先了解一下Hive架构 : 大家可以简单看一下这个架构图,我介绍其中要点: Hive的数据分为两种,一种为普通数据,一种为元数据. 元数据存储着表的基本信息,增删 ...
- Hive关于数据表的增删改(内部表、外部表、分区表、分桶表 数据类型、分隔符类型)
建表 基本语句格式 CREATE [external] TABLE if not exists student #默认建立内部表,加上external则是建立外部表(id int COMMENT'学号 ...
- Hive内部表与外部表区别详细介绍
文章转载自:http://www.aboutyun.com/thread-7458-1-1.html 1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表 ...
- hive内部表与外部表入门
表分类 在Hive中,表类型主要分为两种, 第一种:内部表 也叫管理表 表目录会创建在集群上的{hive.metastore.warehouse.dir}下的相应的库对应的目录中. 默认创建的表就是内 ...
- Hive 与 Hbase表映射(内部表与外部表),Hbase常用命令
应用场景 1.将ETL操作的数据存入HBase 2.Hbase作为Hive的数据源 构建低延迟的数据仓库 Hive表映射至Hbase Hbase上有表 -> 外部表 创建Hive表映射HBase ...
- Hive内部表与外部表
文章目录 0. 查看表元数据信息 1. 内部表 2. 外部表 3. 内外部表差异 0. 查看表元数据信息 使用DESCRIBE FORMATTED tablename,来获取表的元数据描述信息,可以从 ...
- hive中内部表和外部表有什么区别?一般什么时候使用内部表什么时候使用外部表?
hive中内部表和外部表有什么区别? 在使用hive搭建数据仓库的时候,可以建立两种表格.一种是内部表(managed table),一种是外部表(external table). 内部表建表是不加修 ...
最新文章
- TensorRT PoolingLayer
- 二叉树的高度-递归-JS实现
- STM32 IO口输入输出模式的简洁见解
- 大数据WEB阶段(六)MySql详解(二)
- jQuery 五角星评分
- Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本
- python读取dicom文件的包_python 读取DICOM头文件的实例
- 光纤终端服务器,[原创]简单介绍光缆终端盒知识
- ImportError: cannot import name *
- 喜欢网络文学的人有多少?当代年轻人是这样阅读的
- C++ vector 容器的使用
- vmware下linux的vmware tools安装
- 一分钟教你学会配置eslint,还在为风格单双引号,对象末位逗号要不要,引用各种报错而烦恼?(建议收藏!详细中文注释)...
- lisp 吴永进_AutoCAD 完全应用指南
- 计算机二级考试c语言 上机,计算机等级考试二级C语言上机题[2]
- Spring 菜鸟教程 异常 集锦
- Vue动态渲染本地图片
- 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false
- 真无线蓝牙耳机哪个牌子好?最适合打游戏的无线耳机
- RPA拾取界面元素方式
热门文章
- 基于MODBUS-RTU协议的串口编程
- ORA-02049: 超时: 分布式事务处理等待锁
- cocos+kbe问题记录
- BZOJ1027 [JSOI2007]合金 【计算几何 + floyd】
- scrollIntoView()窗口滚动
- django基础知识之验证码:
- linux下mysql 启动命令
- 【转载】C++ function、bind和lambda表达式
- zoj 1450 Minimal Circle 最小覆盖圆
- Page_Load基类,重写OnLoad