zoukankan      html  css  js  c++  java
  • 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表中的数据。

  • 相关阅读:
    文件下载
    Regularexpressionvalidator控件常用正则表达式
    确认删除
    回发或回调参数无效。
    回车提交表单
    具有身份验证的web.config
    OleDbParameter参数的使用
    把CS文件编译成dll文件
    .Net简单三层
    ASP.NET 2.0中的页面输出缓存
  • 原文地址:https://www.cnblogs.com/hackerer/p/14136509.html
Copyright © 2011-2022 走看看