Hive on Hbase

  • Hive on Hbase介绍
  • Hive on Hbase 配置
  • Hive on Hbase 实现

Hive on Hbase介绍

  • 功能:实现Hive与Hbase集成,使用Hive SQL对Hbase的数据进行处理

  • 原理

    • Hive的功能:使用HQL对表的数据进行处理

      • 本质:通过MapReduce对HDFS中的文件进行处理

      • 原理

        • TextInputFormat:读文件

        • TextOutputFormat:写文件

    • MapReduce的功能:读取数据进行分布式计算

      • InputFormat:输入类

        • TextInputFormat:默认的输入类,用于读取文件系统
        • DBInputFormat:用于读取JDBC数据库
          • 实现Sqoop导入的:将MySQL数据导入到Hive或者HDFS
        • TableInputFormat:用于读取Hbase数据
      • OutputFormat:输出类

        • TextOutputFormat:默认的输出类,用于将结果写入文件系统

        • DBOutputFormat:用于写入JDBC数据库

          • 实现Sqoop导出的:将HDFS数据写入MySQL
        • TableOutputFormat:用于写入HBase数据库

    • 原理:Hive可以通过MapReduce来实现映射读写Hbase表的数据

  • 特点

    • 优点:支持完善的SQL语句,可以实现各种复杂SQL的数据处理及计算,通过分布式计算程序实现,对大数据量的数据处理比较友好

    • 缺点:不支持二级索引,数据量不是特别大的情况下,性能一般

  • 应用

    • 基于大数据高性能的离线读写,并且使用SQL来开发

Hive on Hbase 配置

  • 需求

    • 配置Hive与Hbase集成,实现Hive中可以读写Hbase表
  • 分析

    • step1:修改Hive配置文件,指定Hbase的Zookeeper地址
    • step2:按顺序启动HDFS、ZK、Hbase、Hive
  • 实现

    • 全部操作在装有hive的节点配置

    • 修改hive-site.xml:Hive通过SQL访问Hbase,就是Hbase的客户端,就要连接zookeeper

      cd /export/server/hive-2.1.0-bin/
      vim conf/hive-site.xml
      
      <property><name>hive.zookeeper.quorum</name><value>node1,node2,node3</value>
      </property><property><name>hbase.zookeeper.quorum</name><value>node1,node2,node3</value>
      </property>
      <property><name>hive.server2.enable.doAs</name><value>false</value>
      </property>
      
    • 修改hive-env.sh

      export HBASE_HOME=/export/server/hbase-2.1.0
      
    • 启动HDFS、ZK、Hbase:第一台机器

      start-dfs.sh
      /export/server/zookeeper-3.4.6/bin/start-zk-all.sh
      start-hbase.sh
      
    • 启动Hive和YARN:第三台机器

      #启动YARN
      start-yarn.sh
      #先启动metastore服务
      start-metastore.sh
      #然后启动hiveserver
      start-hiveserver2.sh
      #然后启动beeline
      start-beeline.sh
      
  • 总结

    • 先配置Hive的配置文件:添加Hbase的地址
    • 然后按照先后顺序启动即可

    Hive on Hbase 实现

  • 需求

    • 在Hive中实现对Hbase表的数据读写
  • 分析

    • step1:如果表在Hbase中没有,Hive中没有,在Hive中创建表,指定在Hbase中创建关联表

      • 场景比较少
      • 在Hive中建一张表,自动在Hbase中也创建一张对应的表
    • step2:如果表在Hbase中有,但是Hive中没有,Hive中创建一张外部表,关联Hbase表
      • 主要应用的方式
      • Hbase中的表已经存在,已经有数据,构建一张Hive关联表,使用SQL进行查询
  • 实现

    • 在安装hive的机器中测试

    • 如果Hbase中表不存在:【用的比较少】

      • 创建测试数据文件

        vim /export/data/hive-hbase.txt
        1,zhangsan,80
        2,lisi,60
        3,wangwu,30
        4,zhaoliu,70
        
      • 创建测试表

        --创建测试数据库
        create database course;
        --切换数据库
        use course;
        --创建原始数据表
        create external table if not exists course.score(
        id int,
        cname string,
        score int
        ) row format delimited fields terminated by ',' stored as textfile ;
        --加载数据文件
        load data local inpath '/export/data/hive-hbase.txt' into table score;
        
      • 创建一张Hive与HBASE的映射表

        create table course.hbase_score(
        id int,
        cname string,
        score int
        )
        stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
        with serdeproperties("hbase.columns.mapping" = "cf:name,cf:score")
        tblproperties("hbase.table.name" = "hbase_score");
        
      • 将测试表的数据写入映射表

         set hive.exec.mode.local.auto=true;insert overwrite table course.hbase_score select id,cname,score from course.score;
        
    • 如果Hbase中表已存在,只能创建外部表

        create external table course.t1(key string,name string,age  string,addr string,phone string)  stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  with serdeproperties("hbase.columns.mapping" = ":key,basic:name,basic:age,other:addr,other:phone") tblproperties("hbase.table.name" = "itcast:t1");
      

  • 总结

    • Hive中的只是关联表,并没有数据,数据存储在Hbase表中

    • 在Hive中创建Hbase的关联表,关联成功后,使用SQL处理关联表

    • 如果Hbase中表不存在,默认使用Hive的第一列作为rowkey

    • 如果Hbase中表已存在,只能建外部表,使用:key来表示rowkey

    • HIve中与Hbase关联的表,不能使用load加载,只能使用insert,通过MR读写数据

Hive on Hbase相关推荐

  1. hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据

    概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...

  2. HIVE和HBASE区别

    http://www.cnblogs.com/justinzhang/p/4273470.html https://www.zhihu.com/question/21677041 1. 两者分别是什么 ...

  3. hive与hbase整合

    配置环境. hadoop 2.4 hbase 0.98.3 hive 0.13.1(源用的mysql) 配置. 分2种情况(1.hbase与hive在一台机器上,2.hbase与hive不在同一台机器 ...

  4. 大数据:Hive和Hbase的区别于优势

    1. 前言 最近在研究大数据相关知识,Hive和Hbase是之前本科的时候调研过的两个数据仓库.现在特把这两个数据仓库拿来总结以下,这两个数据仓库各自由各自的特点,可以应用与不同的应用场景.对于大数据 ...

  5. 浅谈Hive和HBase区别

    出处: http://www.cnblogs.com/zlslch/p/5659641.html . 两者分别是什么?     Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通 ...

  6. Hive与Hbase结合使用

    hive的启动需要使用到zookeeper, 所以, 要么自己搭建zookeeper, 要么跟其它东西一起使用, 我这里做的是跟hbase一起使用的zookeeper, 因为hbase自带zookee ...

  7. Hive和HBase

    一.两者的定义 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,它的本质就是将SQL语句转换为MapReduce任务进行运行. HB ...

  8. hive与hbase整合方式和优劣

    分别安装hive 和 hbase 1.在hive中创建与hbase关联的表 create table ganji_ranks (row string,num string) STORED BY 'or ...

  9. hive和hbase区别和联系

    作者:有点文 链接:https://www.zhihu.com/question/21677041/answer/185664626 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  10. Sqoop(三)将关系型数据库中的数据导入到HDFS(包括hive,hbase中)

    本文转自:https://www.cnblogs.com/yfb918/p/10855170.html 一.说明: 将关系型数据库中的数据导入到 HDFS(包括 Hive, HBase) 中,如果导入 ...

最新文章

  1. 处方上电脑 北大口腔医嘱一清二楚
  2. vue项目适应不同屏幕做的适配器
  3. windos10下编译opencv_4.0.1+opencv-contrib_4.0.1
  4. Java ArrayList set()方法与示例
  5. MongoDB学习笔记二—Shell操作
  6. 理发店收银系统php,【毕业论文】基于php+mysql美发店收银系统设计与实现.doc
  7. koa2-cors应答跨域请求实现
  8. java实例分析宠物商店_java实例分析:宠物商店.ppt
  9. 蓝桥杯 ADV-84 算法提高 图形输出
  10. 商务部回应中兴被罚:坚决反对美国用国内法制裁中企
  11. go: writing stat cache:, permission denied
  12. 幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录
  13. SystemUI 布局
  14. 一发入魂双链表(十字链表)
  15. Java爬虫后台微信小程序之音乐播放器(下)
  16. NEON 常用函数及其执行结果
  17. Linux系统发展历史
  18. NeHe OpenGL第二十九课:Blt函数
  19. Qt屏幕的尺寸及屏幕分辨率
  20. MYSQL详解(5)-索引(一)

热门文章

  1. ESP8266-01 MQTT固件烧录并连接阿里云服务器
  2. java在线文档管理系统_spring-boot-doc
  3. 开发人员实用的在线工具
  4. 高效开发工具使用技巧
  5. 助记词(Mnemonics)生成种子,以及Public Key, Private key
  6. 获取列——Excel的COLUMN、COLUMNS
  7. springboot实现微信模板消息推送
  8. 学习CALCULATE函数(一)修订版
  9. android rom打包解包工具,Android ROM包定制(解包,增删模块,打包)
  10. Windows10修改本地用户账户名(彻底修改)