美文网首页
Hive简介

Hive简介

作者: 上山走18398 | 来源:发表于2019-07-09 07:20 被阅读0次

    简述

    Hive是基于Hadoop之上的数据仓库
    什么是数据仓库:就是数据库
    
    
    如何搭建数据仓库
    创建的过程是什么
    如何把数据导入到数据仓库?
    
    
    构建在hadoop HDFS的一个数据仓库,就是一个数据库
    
    
    Hive的体系结构是什么?
    Hive如何与Hadoop HDFS进行相互操作
    Hive数据与Hadoop中的文件之间的关系
    
    Hive的安装和管理: 3种方式
    
    Hive的数据模型和操作
    

    数据仓库

    数据仓库是一个面向主题的,继承的,不可更新的,随时间不变化的数据集合
    它用于支持企业或组织的决策分析处理
    
    主题?  -- 商品推荐系统--? 商品
    
    集成的--原来的数据库(可能来自oracle mysql 等),不同的数据集成起来
    
    主要就是为了查询
    
    2. 数据仓库的结构和建立过程
    
    |数据源(数据库,文档资料,或者其他数据资料)| 
    |                                               |  数据存储于管理
    |                                               | 抽取(Extract)
    | 业务数据系统                                  |
    |                                               |
    |                                               |
    | 文档资料                                      |转换(transform)
    |                                               |
    |                                               |
    | 其他数据                                      |装载(load)
    |                                               |
    
    
    数据源 --》 数据存储--》数据仓库引擎 --》前端展示
    
    
    OLTP应用 与 OLAP应用
    
    典型的OLTP应用 :银行转账 事务
    
    OLAP:商品推荐系统,主要面向的是查询,历史数据
    
    
    数据仓库中的数据模型
    
    星型模型: 以一个主题为核心
    
    
    雪花模型:不停扩展
    
    
    什么是Hive
    1. Hive是建立在Hadoop HDFS上的数据仓库基础架构
    2. Hive可以用来进行数据提取转化加载(ETL)
    
    3. Hive定义了简单的类似SQL查询语言,成为HQL它允许属性SQL的用户查询数据
    
    4. Hive允许熟悉MapReduce开发者的开发自定义的mapper和reducer 来处理內建的mapper和reducer无法完成的复杂的分析工作
    
    5. Hive是SQL解析引擎,它将SQL语句转化成M/R job 然后在Hadoop执行
    
    6. Hive的表其实就是HDFS的目录/文件
    

    Hive的体现结构 (支持mysql derby oracle)

    1. Hive的元数据
    - Hive 将元数据存储在数据库中(metastore),支持mysql、Derby、oracle等数据库,默认derby
    
    - Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表),表的数据所在目录
    
    2. Hive的体现结构之HQL的执行过程
    一条HQL语句如何在hive中进行查询
    
    解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、
    优化以及查询计划(Plan)的生成
    生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行
    
    
    
    3. Hive的体系结构
    
    Hadoop
    - 用HDFS进行存储,利用MapReduce计算
    
    元数据存储(MetaStore)
    - 通常是存储在关系数据库如 mysql、derby中
    

    Hive 的安装

    Hive的管理(对数据仓库管理)

    - Hive的管理之CLI方式
    启动方式:
    - 直接输入#<HIVE_HOME>/bin/hive的执行程序
    - 或者输入#hive --service cli
    
    常用的CLI命令
    1. 清屏
        Ctrl + L 或者 !clear;
    2. 查看数据仓库中的表
        show tables;
        
        show tables --查看表信息 (--代表注释)
    3. 查看数据仓库中内置的函数
        show functions;
    
    4. 查看表的结构 (一个表对应HDFS上一个文件夹?)
        desc 表名
    5. 查看HDFS上的文件
        dfs -ls 目录
        
    6. 执行操作系统的命令
        ! 命令
    
    7. 执行HQL语句(执行的原理)
        select ***from ***
        
        转换成MapReduce作业
        
        不转换:  *
        
        Hive -S 进入静默模式不产生MapReduce的调试信息
        
        Hive -e “show tables” //不进入hive模式
        
    
    8. 执行SQL脚本
        source SQL脚本
    
    - Hive的管理之web界面方式
    端口号 9999
    Hive --service hwi&
    浏览器: http://<ip地址>:9999/hwi/
    
    # 命令保存,找不到文件
    编译源代码,找到 hwi/ web
    
    jar cvfM0 hive-hwi-0.13.0.war -C web/.
    
    ....配置文件 jar包等
    
    Web管理器只能做查询操作
    
    - Hive的管理之远程服务
    端口号  10000
    启动方式: hive --service hiveserver &
    
    以JDBC或ODBC的程序登录到hive中操作数据时,必须选用远程服务启动方式
    

    Hive的数据类型

    基本数据类型
    
    tinyint/smallint/int
    boolean
    float/double
    string
    
    eg.1
    hive>create table perspn(
    pid int,
    pname string,
    married boolean,
    salary double
    );
    
    DECS PERSON;
    
    //char(20) 和 varchar(可变长度)
    
    
    
    复杂数据类型
    
    Array:数组类型
    
    Map:集合类型
    
    Struct:结构类型
    
    
    时间类型
    
    Date
    
    TimeStamp
    

    Hive的数据模型

    Hive的数据储存
    
    //show tables;
    基于HDFS
    没有专门的数据储存格式
    存储结构主要包括:数据库,文件,表,视图
    可以直接加载文本文件(.txt文件等)
    创建表时,指定Hive数据的列分隔符与行分隔符
    

    - 表

    Table 内部表
    Partition 分区表
    External Table 外部表
    Bucket Table 桶表
    
    
    Table 内部表
    1. 与数据库中的Table在概念上类似
    2. 每一个Table在Hive中都有一个相应的目录存储数据
    3. 所有的Table数据(不包括External)都保存在这个目录中
    //一个表就是一个目录?
    4. 删除表时,元数据与数据都会被删除
    创建表时,未指定目录,创建为/user/hive/warehouse下
    location 指定路径
    row format delimited fields terminated by "," //指定分隔符
    
    
    Partition 分区表
    
    1. Partition 对应于数据库的Partition列的密集索引
    2. 在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中
    
    //partitioned by (gender string)
    
    //Partition Information
    
    eg.1 
    insert into table partition_table partition(gender="M") select...
    
    数据量大是,可以提供查询效率
    
    explain 查询执行计划,看是否有优化
    
    
    外部表
    
    1. 指向已经在HDFS中存在的数据,可以创建Partition
    
    2. 他和内部表在元数据的组织上是相同的,而实际数据的存储则有较大差异
    
    3. 外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接
    
    eg.1
    create external table ..
    (
        ..
    )
    rmat
    location ..
    .
    
    >create external table external_student (sid int, sname string, age int) row format delimited fields terminate location '/input';
    
    桶表(Bucket Table) 桶表是对数据进行哈希取值,然后放到不同文件存储。
    也就是说,桶表中的数据,是通过哈希运算后,将其打散,再存入文件当中,这样做会避免造成热块,从而提高查询速度。 
    
    create table bucket_table1 (name string,age int) clustered by(name)into 5 buckets;
    
    
    视图(View) 
    -视图是一种虚表,是一个逻辑概念;可以跨越多张表 
    -视图建立在已有基础上,视图赖以建立的这些表称为基表 
    -视图可以简化复杂的查询
    
    create view empinfo 
    as 
    select e.empno,e.ename,e.sal,e.sal*12 annlsal,d.dname from emp e,dept d
    where e.deptno=d.deptno;
    //视图简化查询,依赖表
    不支持雾化视图
    
    • 视图

    相关文章

      网友评论

          本文标题:Hive简介

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