Hive

本文探讨了Hive与传统数据库的区别,特别是在数据加载模式方面。Hive采用读时模式,即在数据读取时进行验证,这与传统数据库的写时模式形成对比。文章还介绍了如何在Hive中创建和使用内部表与外部表,并展示了具体的实践案例。
摘要由CSDN通过智能技术生成

hive与传统数据库的比较

数据加载模式

传统数据库在数据加载时数据类型必须符合数据要求,这种在写入时进行数据验证的称为写时模式(schema on write)
而hive在数据加载时不对数据进行验证,而是在读的时候进行验证。

优劣势比较:
写时模式在查询时速度更快,加上索引、数据压缩等优化,但在数据写入时会比较慢,比如数据验证、更新索引等。
读时模式在数据加载更快,因为hive是基于大数据的,数据量较大的情况下,我们优先关注数据怎么存的问题,在查时才去确认数据。
hive加载数据基本上是数据文件的移动,而不是复制。
复制是会出现在不是在一个文件系统上,比如有local关键字。

练习

下面我做个实验直接将数据复制到了表的仓库(warehouse)里。
这里写图片描述
可以看到warehouse中tt2的表什么都没有。右边我开始上传数据。

这里写图片描述
然后开始查询
这里写图片描述

表结构:
create table tt2(name string ,age int)  row format delimited fields terminated by ',';
数据格式:
hadoop fs -cat  /user/hive/warehouse/tt2/table_data.txt
jack,15
tom,61
tony,35

这里我规定了行内数据的分割符,不然会造成数据对不上的情况,比如age显示为空。

外部表和内部表

内部表(managed table)由hive管理数据和表信息。
外部表(external table)由hive管理表信息,数据放在外部。
具体操作的差异体现在load和drop上。

Tablesloaddrop
内部表将数据加载到仓库目录删除表和表数据
外部表将数据存放在外部仅删除表信息

外部表创建方式

 create external table exttable (name string ,age int) row format delimited fields terminated by ',' location '/input/exttable';

上传数据文件

hadoop fs -put table_data.txt  /input/exttable/

表查询
这里写图片描述
表删除实验:
这里写图片描述
发现数据文件还在:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值