Hive了解

转自:https://aws.amazon.com/cn/big-data/what-is-hive/

https://www.jianshu.com/p/e9ec6e14fe52,https://blog.csdn.net/qq_26442553/article/details/80300714

1.简介

Facebook为了解决海量日志数据的分析而开发了Hive,Hive是一种用类SQL语句来协助读写、管理存储在分布式存储系统上大数据集的数据仓库软件。

Hive 让用户可以利用 SQL 读取、写入和管理 PB 级数据,将复杂的MapReduce编写任务简化为SQL语句。因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,它适用于离线分析。

  • Hive 使用批处理,因此它可以快速操作非常大型的分布式数据库,Hive 会将 HiveQL 查询转换成在 Apache Hadoop 的分布式作业计划框架。
  • 它会查询存储在分布式存储解决方案,如 Hadoop 分布式文件系统 (HDFS,hadoop Distribute file system) 。数据是存储在HDFS上的,Hive本身并不提供数据的存储功能。
  • Hive将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如MySQL)。Hive中的元数据包括表的名字,表的和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
  • 支持结构化和非结构化数据。为常见的 SQL 数据类型提供原生支持,如 INT、FLOAT 和 VARCHAR。
  • 数据存储方面:它能够存储很大的数据集,并且对数据完整性、格式要求并不严格。

 2.Hive架构

 Hive的底层数据是存储在HDFS上的,Hive中的库和表可以看作是对HDFS上数据做的一个映射,所以Hive必须是运行在一个Hadoop集群上的。

3.Hive文件格式

  1. TEXTFILE。为默认格式,导入数据时会直接把数据文件拷贝到hdfs,行存储。
  2. SEQUENCEFILE
  3. RCFILE
  4. ORCFILE(0.11以后出现) 

 其中sequencefile是进行二进制格式编码压缩,也是基于行存储,rcfile是基于列存储。

 4.行存储与列存储

表:

按行存储:

  • 优点:相关的数据是保存在一起,比较符合面向对象的思维,一行数据就是一条记录。这种存储格式比较方便进行INSERT/UPDATE操作。
  • 缺点:
    • 如果查询只涉及某几个列,它会把整行数据都读取出来,不能跳过不必要的列读取。如果数据量比较大就比较影响性能。
    • 由于每一行中,列的数据类型不一致,导致不容易获得一个极高的压缩比,也就是空间利用率不高。
    • 不是所有的列都适合作为索引。

按列存储:

  • 优点:
    • 查询时,只有涉及到的列才会被查询,不会把所有列都查询出来,即可以跳过不必要的列查询。
    • 高效的压缩率,不仅节省储存空间也节省计算内存和CPU。
    • 任何列都可以作为索引。
  • 缺点:INSERT/UPDATE很麻烦或者不方便;不适合扫描小量的数据。

 

posted @   lypbendlf  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示