Hive

来源:互联网 发布:sql日月年转年月日 编辑:程序博客网 时间:2024/06/05 19:16

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.txtjack,15tom,61tony,35

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

外部表和内部表

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

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

外部表创建方式

 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/

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

原创粉丝点击