• 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很麻烦或者不方便;不适合扫描小量的数据。
  • 相关阅读:
    python学习之调试:
    python学习之调试 错误捕捉及处理
    python之面向对象
    python学习之模块:
    python学习之内部函数:
    python学习之高级特性:
    python学习之结构语句
    python学习之列表元组,字典
    getopt使用例子
    找到系统盘被打满文件
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/16543348.html
Copyright © 2020-2023  润新知