Hive_基础

来源:互联网 发布:淘宝代运营tmyunying 编辑:程序博客网 时间:2024/06/05 09:53
  1. Hive是什么

    Hive是一个构建在Hadoop上的数据仓库框架,提供了一系列用于ETL的工具
    Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行
    Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。
    设计目的:
    让精通SQL(但Java编程相对较弱)的分析师能够以类SQL的方式查询存放在HDFS的大规模数据集
    Hive相当于hadoop的客户端工具,部署时不一定放在集群节点中

  2. Hive基本架构

    这里写图片描述

  3. Hive数据类型

    ① 基本数据类型

    tinyint/smallint/int/bigintfloat/double/decimalbinarybooleanstring/char/varchardate/timestamp

    ② 复杂数据类型

    Array/Map/Struct/named struct/union

    STRUCT:such as {val1, val2, val3, …}.By default, STRUCT field names will be col1,col2, and so on. You can access the value using structs_name.column_name, for example,fruit.col1=1.

    NAMED STRUCT: such as (name1, val1, name2,val2, and so on). You can access the value using structs_name.column_name, for example, fruit.apple=”gala”.

    UNION:{2:[“apple”,”orange”]}

  4. Hive数据存储

    ① Hive的数据存储基于Hadoop HDFS

    ② Hive没有专门的数据存储格式

    ③存储结构主要包括:数据库、文件、表、视图

    ④ Hive默认可以直接加载文本文件(TextFile),还支持sequence file

    ⑤ 创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据

  5. Hive数据模型

    ① 管理表(内部表)
    所有的 Table 数据(不包括 External Table)都保存在warehouse这个目录中。删除表时,元数据与数据都会被删除

    ② 外部表
    包含External 的表,删除外部表只删除metastore的元数据,不删除hdfs中的表数据。可以创建 Partition,它和 内部表 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。

    ③ 分区表
    通过分类把不同类型的数据放到不同的目录下。分类的标准就是分区字段,可以一个,也可以多个。分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全部扫描。

    ④ 桶表
    对数据进行哈希取值,然后放到不同文件中存储。数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。物理上,每个桶就是表(或分区)目录里的一个文件,一个作业产生的桶(输出文件)和reduce任务个数相同。

    ⑤ 视图
    使用视图可以降低查询的复杂度

  6. Hive与普通关系型数据库

    这里写图片描述

原创粉丝点击