Hadoop-HBase-Hive-集成


HBase 提供的查询主要还是通过 key 的方式进行的,相比 hive,hbase 的查询要薄弱很多。Hive 整合 HBase 后的使用场景:

  • 通过 Hive 把数据加载到 HBase 中,数据源可以是文件也可以是 Hive 中的表
  • 通过整合,让 HBase 支持 JOIN, GROUP 等 SQL 查询语法
  • 通过整合,不仅可完成 HBase 的数据实时查询,也可以使用 Hive 查询 HBase 中的数据完成复杂的数据分析

集成

  1. 把 hbase 相关 jar 包拷贝到 hive lib 目录下
    • hbase-common-2.5.3.jar
    • hbase-server-2.5.3.jar
    • hbase-client-2.5.3.jar
    • hbase-protocol-2.5.3.jar
    • hbase-it-2.5.3.jar
    • hbase-hadoop-compat-2.5.3.jar
    • hbase-hadoop2-compat-2.5.3.jar
  2. hive-site.xml
    <property>
        <name>hive.zookeeper.quorum</name>
        <value>hadoop01,hadoop02,hadoop03</value>
    </property>
    <property>
        <name>hive.zookeeper.client.port</name>
        <value>2181</value>
    </property>
  3. JDK版本保持一致, 推荐1.8

测试

  1. hive 里面建表:
    CREATE TABLE hive_hbase_person_table(
    empno int,
    ename string,
    age int)
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:age")
    TBLPROPERTIES ("hbase.table.name" = "hbase_person_table");
    CREATE TABLE person(
    empno int,
    ename string,
    age int)
    row format delimited fields terminated by ',';
  2. hive 导入数据:
    1. load data local inpath '/testdata/hbasedata' into table person;
    2. insert into table hive_hbase_person_table select * from person;
  3. hbase 查询数据: scan 'hbase_person_table'

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录