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表中的数据。

  • 相关阅读:
    Bzoj 3173: [Tjoi2013]最长上升子序列 平衡树,Treap,二分,树的序遍历
    Bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声 单调栈
    Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
    Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆
    Bzoj 3110: [Zjoi2013]K大数查询 树套树
    Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
    面试题24:二叉排序树的后序遍历序列
    面试题23:从上往下打印二叉树
    面试题22:栈的压入、弹出序列
    面试题21:包含min函数的栈
  • 原文地址:https://www.cnblogs.com/hackerer/p/14136509.html
Copyright © 2011-2022 走看看