美文网首页
Hive之相关概念

Hive之相关概念

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-10-16 12:54 被阅读0次

    HIVE SQL的编译过程:https://tech.meituan.com/2014/02/12/hive-sql-to-mapreduce.html

    数据模型

    想要把MP任务变成SQL语句,需要先把数据结构化,才能用SQL语句查询。
    HIVE的数据通过表来抽象,数据由多行记录构成,一行记录包含多个字段,每个字段有特定的类型。
    HIVE支持的类型:整数、浮点数和字符串;支持的复杂类型包含:数组、字典和结构体;同时允许自定义字段类型。
    HIVE通常采用宽表结构,把一个对象的所有字段保存在一张表中。避免join操作,join操作一般需要跨服务器交互,成本高而且性能差。
    HIVE的数据表支持分区和分桶操作,hive的分区方式属于静态分区,主要执行批处理作业,一次扫描大量连续的数据,数据只要按照过滤条件静态分区即可。

    • 分区
      分区:根据指定字段的值,把数据分到不同的区,每个值一个区。以后可以根据这个字段来查询数据,就会只扫描对应分区的数据,而不用读全部数据。比如按照日期进行分区。
    • 分桶
      分桶:根据指定字段的值,把数据分到固定个数的桶中,比如指定32个桶,通过哈希的方式让数据分布到不同的桶中。分桶可以用于采用分析。

    数据存储

    HIVE的数据表存储在HDFS上,一张表对应了HDFS的一个目录,对数据表分区,就是以分区字段的值作为目录名,创建子目录,分区数据保存在子目录中。
    对数据表分桶,就是把原来的一个文件,分成多个文件,有几个桶就拆成几个文件。至于分桶后的文件放在哪里,就看在表上分桶,还是在分区上分桶。如果在表上分桶,就存储在表的根目录,如果在分区上分桶,就存储在对应的分区目录。
    HIVE通过序列化和反序列化器,指定应用层数据模型和存储数据模型之间的转换规则。比如以什么作为分隔符,又以什么作为字段分隔符。

    HIVE通过文件格式指定数据如何存储到文件中,比如是以文本格式存储,还是以二进制格式存储,还是使用列式存储。

    系统架构

    HIVE的整体架构并不复杂,总共分为3个部分。

    • 对外接口
      对外接口包括命令行、web界面、thrift接口,以及JDBC和ODBC驱动。通过thrift接口,HIVE可以支持其他语言的客户端的调用。
    • 驱动器
      驱动器管理了HIVEQL语句的生命周期,它通过编译器和优化器创建执行计划,通过执行器执行计划。
    • Metastore
      Metastore存储了Hive的各种元数据,包括表的名称和位置、列的名称和类型等。

    相关文章

      网友评论

          本文标题:Hive之相关概念

          本文链接:https://www.haomeiwen.com/subject/taqzfrtx.html