• Hive与HBase整合文档


    Hive与HBase整合文档

    1. Hive整合HBase配置
    2. 拷贝hbase 相关jar

      hbase 相关jar包拷贝到hive lib目录下

      hbase-client-0.98.13-hadoop2.jar

      hbase-common-0.98.13-hadoop2.jar

      hbase-server-0.98.13-hadoop2.jar

      hbase-common-0.98.13-hadoop2-tests.jar

      hbase-protocol-0.98.13-hadoop2.jar

      htrace-core-2.04.jar

      hive-hbase-handler-1.0.0.jar

      zookeeper-3.4.5.jar

    file:///home/hadoop/app/hive/lib/hbase-client-2.2.2.jar,

    file:///home/hadoop/app/hive/lib/hbase-common-2.2.2.jar,

    file:///home/hadoop/app/hive/lib/hbase-common-2.2.2-tests.jar,

    file:///home/hadoop/app/hive/lib/hbase-protocol-2.2.2.jar,

    file:///home/hadoop/app/hive/lib/hbase-server-2.2.2.jar

     

    1. 修改hive-site.xml配置文件

      将上述jar包添加到hive-site.xml配置的hive.aux.jars.path属性中。

         修改hive.zookeeper.quorum属性

            添加hbase.zookeeper.quorum属性,此属性hive-site.xml之前不存在。

    1. 修改hive-env.sh配置文件

    同默认配置文件中copy一份hive-env.sh文件

    修改hive-env.sh配置文件

    1. 启动Hive

    上述配置完成之后,通过bin/hive命令启动hive

    如果出现以上输出信息,说明hive整合hbase成功。

    1. Hive整合HBase后使用

    2.1 准备测试数据

    (1)测试数据文件

    创建测试文件course.csv

    第一列为课程名称,第二列为课程分数

    (2)数据加载到HDFS

    在hdfs文件系统中创建hive-hbase目录,并加载测试数据。

    查看hdfs文件目录

    创建/hive-hbase/course目录

    将course.csv文件上传至/hive-hbase/course目录下

    (3)创建Hive数据库

    进入Hive Shell 客户端创建库course

    (4)创建Hive表

    进入Hive Shell 客户端创建外部表。

    create external table if not exists course.testcourse(cname string,score int) row format delimited fields terminated by ' ' stored as textfile location '/hive-hbase/course';

    (5)查看hive表数据

    select * from course.testcourse;

    从查询语句的执行结果可以看出,Hive表中的数据和hdfs上的数据一致。

    2.2 创建Hive内部表

    create table 建表语句声明

    course.hbase_testcourse 所创建的Hive表名称

    (cname string,score int) 所创建Hive表字段

    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 指定使用Hive Storage Handlers

    WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") 指定HBase表与Hive表字段映射关系。

    TBLPROPERTIES("hbase.table.name" = "hbase_testcourse"); 指定HBase表名

    内部表创建语句如下:

    create table course.hbase_testcourse(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") TBLPROPERTIES("hbase.table.name" = "hbase_testcourse", "hbase.mapred.output.outputtable" = "hbase_testcourse");

    1. 查看Hive中所创建的表

    进入Hive Shell 客户端执行

    hive> use course;

    hive> show tables;

    1. 查看HBase 中所创建的表

    进入HBase Shell 客户端执行

    bin/hbase shell

    2.3 加载数据

    创建完内部表,可以通过Hive支持的insert overwrite 方式将一个表的数据导入HBase。

    下面是对应的执行语句:

    insert overwrite table course.hbase_testcourse select cname,score from course.testcourse;

     

    2.4 执行查询

    加载完数据后,需要验证一下加载结果是否存在问题,验证一下总记录数。

    select count(*) from course.hbase_testcourse;

    2.5 创建外部表

    创建外部表适用于该表在HBase中已经存在,但在Hive中并没有相关信息。此时可以通过创建外部表的方式,为HBase现有表提供SQL查询条件。而内部表适用于Hive和HBase都没有相关表的情况。

    1. 创建HBase

    进入HBase Shell客户端执行建表命令

    create 'hbase_test',{ NAME => 'cf'}

    1. 插入数据

    执行以下命令插入数据

    put 'hbase_test', 'hadoop','cf:score', '95'

    put 'hbase_test', 'storm','cf:score', '96'

    put 'hbase_test', 'spark','cf:score', '97'

    1. 查看数据

    执行扫描表操作

    scan 'hbase_test'

    1. 创建Hive外部表

    进入Hive Shell 客户端,创建外部表course.hbase_test,建表命令如下所示:

    create external table course.hbase_test(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score") TBLPROPERTIES("hbase.table.name" = "hbase_test", "hbase.mapred.output.outputtable" = "hbase_test");

    备注:创建外部表和创建内部表的命令基本一致,唯一的区别就是:创建内部表使用create table,创建外部表使用create external table。

    1. Hive 查看数据

    执行Hive命令查询HBase 表中的数据。

    select * from hbase_test;

    通过创建外部表可以成功从Hive 查询HBase表中的数据。

  • 相关阅读:
    推荐:负采样
    JNDI学习总结(一)——JNDI数据源的配置
    前端性能优化
    java中的引用类型概念
    java中的各种数据类型在内存中存储的方式
    POI导出EXCEL经典实现
    synchronized 与 Lock 的那点事
    黑马程序员_Map<K,V> 映射关系 Map.Entry
    Java ConcurrentModificationException异常问题
    表 (list)
  • 原文地址:https://www.cnblogs.com/hackerer/p/14136509.html
Copyright © 2020-2023  润新知