将CDH中的hive和hbase相互整合使用



一、.hbase与hive的兼容版本:

hive0.90与hbase0.92是兼容的,早期的hive版本与hbase0.89/0.90兼容,不需要自己编译。

hive1.x与hbase0.98.x或则更低版本是兼容的,不需要自己编译。

hive2.x与hbase1.x及比hbase1.x更高版本兼容,不需要自己编译。

hive 1.x 与 hbase 1.x整合时,需要自己编译

二、.hbase与hive的整合过程:

    1.修改 hive 的conf目录下 hive-site.xml文件

<property>
                <name>hive.zookeeper.quorum</name>
                <value>node1,node2,node3</value>  
          </property>
          <property>
                <name>hive.server2.enable.doAs</name>
                <value>false</value>   
          </property>

1.可通过Hive -> 操作 -> 下载客户端配置 的方式查看hive-site.xml文件内容,可得知 hive.zookeeper.quorum 配置的内容,默认配置即为 node1,node2,node3 即可。

2.可得知 hive.server2.enable.doAs 默认为 true,推荐修改为false,否则在使用官方推荐的hiveserver2/beeline的方式操作时,在利用HQL语句创建HBase时可能会出现异常。

3.可通过Hive -> 配置 -> 搜索栏中搜索 hive.server2.enable.doAs ,默认为勾选,取消勾选即可,即能修改配置为 false。

再当我们通过Hive -> 操作 -> 下载客户端配置 的方式查看hive-site.xml文件内容,即可查看到hive.server2.enable.doAs已为false

             

2.重启 hive、hbase

3.使用命令 beeline -u jdbc:hive2://node1:10000 -n root 进行连接

4.HIVE执行创建表语句:hbase表 映射 hive表,写入的数据存储在 hbase表中,"hbase.mapred.output.outputtable"可指定数据写入到hbase表中

1.create database rimengshe;

2.use rimengshe;

3.创建hive表的同时也会创建出hbase表

# Hive中的表名test_tb;key字段映射hbase表中的rowkey;value字段映射cf1列簇下的val字段

CREATE TABLE ushio(key int, value string)

# 指定存储处理器

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

# 声明列簇,列名

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")

# hbase.table.name声明HBase表名,为可选属性默认与Hive的表名相同

# hbase.mapred.output.outputtable指定插入数据时写入的表,如果以后需要往该表插入数据就需要指定该值

TBLPROPERTIES ("hbase.table.name" = "ushio", "hbase.mapred.output.outputtable" = "ushio");

3.hbase表中添加数据:put '表名','rowkey值','列簇名:列名','列值'

put 'ushio','98','cf1:val','val_98'

put 'ushio','99','cf1:val','val_99'

put 'ushio','100','cf1:val','val_100'

4.hive表中添加数据:(会运行yarn)INSERT INTO table_name (field1, field2,...fieldN ) VALUES (value1, value2,...valueN );

insert into ushio values(2,'ushio');

5.hbase表 查询表中的所有数据:scan '表名'

scan 'ushio'

6.hive表 查询表中的所有数据:

select * from ushio;

原文地址:https://www.cnblogs.com/Raodi/p/11466005.html