欢迎投稿

今日深度:

Hive,

Hive,


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上。

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/

表查询

表删除实验:

发现数据文件还在:

www.htsjk.Com true http://www.htsjk.com/hive/28940.html NewsArticle Hive, hive与传统数据库的比较 数据加载模式 传统数据库在数据加载时数据类型必须符合数据要求,这种在写入时进行数据验证的称为写时模式(schema on write) 而hive在数据加载时不对数...
相关文章
    暂无相关文章
评论暂时关闭