Hive基础

本文介绍了Hive作为大数据处理工具的基础知识,包括其SQL接口、与RDBMS的对比、数据仓库的分层架构和使用场景。还涵盖了Hive的SQL到MapReduce转换以及元数据管理的重要性。
摘要由CSDN通过智能技术生成

Hive基础入门

  1. 什么是Hive

    1. 由fecebook开源,基于Hadoop的离线数仓工具
    2. 可用于结构化数据文件映射为一张表,提供类SQL查询
    3. 将SQL转换为MapReduce程序
  2. 用途

    1. 离线数仓(SQL–MapReduce)
    2. SQL–>MapReduce–>运算结果–>客户端
  3. 优缺点

    1. 优点
      1. 采用类SQL
      2. 避免直接写MapReduce
    2. 缺点
      1. 延迟高
      2. 对小数据处理没有优势
  4. 数据库和数据仓库的区别

    Hive: 是数据仓库,可以将关系型数据库作为外部数据库使用
        1、hive在处理大数据时有优势
        2、不支持事务
    	3、执行延迟高
    	4、可扩展性高
    RDBMS: 是关系型数据库
    	1、在处理小数据上有优势
    	2、支持事务
    	3、执行延迟低
    	4、可扩展性低
    
  5. datagrip连接hive

    
    
  6. 数仓的分层架构

    
    
  7. 设计丐版Hive

    1. 需求

      1. 用户只需要写SQL
      2. 自动将SQL转化为MapReduce
      3. 能处理位于HDFS上的结构化数据
    2. 需求分析

      1. SQL–>MapReduce
        1、数据文件在哪
        2、用什么符号作为列的分隔符
        3、那些列可以作为city使用
        4、city列是什么类型数据
        
      2. 存储在关系型数据库里面(MySQL)
      3. 构建分布式MySQL
        1. 元数据管理功能:记录各类元数据信息
          1. 数据位置
          2. 数据结构
          3. 数据描述【字段名】
        2. 写一个SQL解析器(JAVA):完成SQL–>MapReduce的转换
          1. 分析SQL
          2. SQL–>MapReduce
          3. 提交MapReduce运行,并搜集结果
      4. 流程图
        在这里插入图片描述
    3. 基本架构
      在这里插入图片描述

      1. 用户接口
        1. CLI接口
      2. 元数据存储
        1. 客户端连接MetaStore
        2. metastore连接MySQL
        3. MetaStore服务连接方式
          1. 本地模式

            1. 优点:可以单独使用外部数据库(MySQL),元数据共享
            2. 缺点:想对浪费支援,MetaStore嵌入到Hive,每启动一次Hive,都内置启动了
          2. 内嵌模式

            1. 优点:解压Hive安装包到hive/bin,可以直接连接
            2. 缺点:
          3. 远程模式(推荐)

            1. 优点:可以单独使用外部数据库(MySQL),元数据共享;可以连接MetaStore服务,也可以连接hiveserver2服务
            2. 缺点:如果要启动hiveserver2服务,需要先启动MetaStore服务
            内嵌模式本地模式远程模式
            单独配置、启动
            存储介质derbymysqlmysql
        4. 启动MetaStore服务
          1. cd /export/server/hive/bin
          2. [nohup] ./hive --server metastore & :不挂起用hive在后台启动MetaStore服务
          3. [nohup] ./hive --server hiveserver2 &
          4. lsof -i:10000 查看该端口有哪些进程在运行
    4. Beeline
      1. 启动beeline,/export/server/hive/bin/beeline
      2. ! connect jdbc:hive2://node1:1000
      3. crtl+d 退出

    5. 配置环境变量,快速启动hive
      在这里插入图片描述

      sudo vim /etc/profile
      echo '#HIVE_HOME'
      echo 'export HIVE_HOME=/export/server/apache-hive-3.1.2-bin' >> /etc/profile
      echo 'export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin' >> /etc/profile
      
  8. 数据仓库和数据库

    1. 数据库(OLTP):用于把数据结果给外部各类程序使用,侧重于CRUD
    2. 数据仓库(OLAP)1. 面向主题
        2. 集成的
        3. 非易失的(不可更新)
        4. 时变的
    
  9. ETL和ELT(将数据加载到数仓中)

    1. ETL:先从数据源池中,抽取数据,保存在临时数据仓库中(ODS)
      1. Extract 抽取
      2. Transform 转化
      3. Load 装载
      4. 工具:kettle
    2. ELT:数据在数据源中抽取后立即加载,没有临时数据库(ODS),数据会立即加载到单一的集中存储库中
  10. Hive数据库操作

  11. HQL

    1. DDL:数据定义语言/数据描述语言

    2. 数据对象:数据库、数据表、视图、索引

    3. 核心语法:
      1. 创建:create
      2. 删除:drop
      3. 修改:alter
      4. 不涉及表内操作

    4. 创建数据库(可以用schema表示数据库)

      # 全英文,不要有中文
      # 创建数据库
      create database [if not exists] 数据库名 [设置编码格式];
      [comment '解释说明']    #注释说明语句
      [location '存储到HDFS路径名']    # 默认路径  hdfs://node1:8020/user/hive/warehouse
      [with dbproperties (属性='值', ...)]  # 数据库的属性配置,键值对
      
      -- 1 在默认路径新建一个班级db1、db2, 给其中一个库添加一些注释
      CREATE DATABASE db1;
      create database db2 comment "database db2 for db1";
      
      -- 2 新建一个添加了属性信息的班级——DB4
      create database db3 with dbproperties ("cls_name"="db_pyb_40");
      
      -- 3 新建DB3,并指定存储路径为:/itheima
      create database db4 location "/ithaima";
      
    5. 查看数据库

      desc database extended 数据库名;
      1extended用于显示更多信息,比如位置路径等;
      
      -- 查看所有数据库
      show databases;
      
      -- 查看创建数据库语句
      show create database 数据库名;
      
      -- 切换数据库
      use 数据库名;
      
      -- 查看当前正在使用的数据库
      select current_database();
      
      
    6. 删除数据库

      drop database 数据库名 [restrict | cascade];
      -- restrict是默认行为,表示限制,即仅在数据库为空时才删除它;
      -- cascade 数据库中带表时,需要加
      
    7. 修改数据库

      -- 修改数据库存储路径
      alter database 数据库名 set locatio 存储路径;(绝对路径)
      -- 修改或新增数据库配置
      alter database 数据库名 set dbproperties (属性名=, ...)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值