Hadoop(四)Hive整合HBase及JDBC方式操作Hive

本文介绍了如何在Hadoop环境中整合Hive和HBase,并通过JDBC方式操作Hive。首先,文章列出了所需环境,包括Hadoop、Hive和HBase的版本。接着,详细讲解了配置Hive的步骤,启动和测试各个组件,以及验证HBase和Hive的交互。最后,展示了如何在Java程序中使用JDBC连接Hive并执行查询,以类SQL的方式操纵HBase数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

学习是一种乐趣,更是一种戒不掉的习惯。

准备环境

以上环境,最好都参照标题中的来,因为涉及到HBase的handler的版本问题。

配置Hive

  • 复制相关jar:
复制$HBASE_HOME/hbase-0.92.1.jar到$HVIE_HOME/lib下,并覆盖(删除)之前的HBase版本。
将~/.bashrc文件部分内容修改至如下:
export HIVE_LIB=$HIVE_HOME/lib
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib/hive-hbase-handler-0.10.0,$HIVE_HOME/lib/hbase-0.92.1.jar,$HIVE_HOME/lib/zookeeper-3.4.3.ja
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase/hbase-0.92.1.jar:$HABSE_HOME/conf/hbase-site.xml:$HIVE_HOME/zookeeper-3.4.3.jar
$HIVE_HOME/conf/hive-env.sh.template为hive-env.sh,加入(修改)至如下内容:
export HIVE_LIB=$HIVE_HOME/lib
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib/hive-hbase-handler-0.10.0,$HIVE_HOME/lib/hbase-0.92.1.jar,$HIVE_HOME/lib/zookeeper-3.4.3.jar
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase/hbase-0.92.1.jar:$HABSE_HOME/conf/hbase-site.xml:$HIVE_HOME/zookeeper-3.4.3.jar

启动、测试

  • 启动Hadoop、HBase、Hive
$HADOOP_HOME/bin/start-all.sh  
$HADOOP_HOME/bin/hadoop dfsadmin -safemode leave  
$HBASE_HOME/bin/start-hbase.sh  
  • 测试个组件运行状况
    • HBase shell中运行list命令
    • Hive ”shell“中运行 shwo tables;命令

查看测试数据

按照我的 HBase环境搭建步骤走下来,则HBase中应当有一个用于存放单词出现次数的表test。我们将test作为Hive的外部表导出以验证Hive与HBase的整合效果。
CREATE EXTERNALTABLE hbase_table_1(key string,word string, count int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:word,info:count") 
TBLPROPERTIES ("hbase.table.name" = "test");
上面的指令是在Hive中创建了一个扩展表“hbase_table_1”,数据来自HBase的“test”,表。
创建完成之后,我们使用
select * from hbase_table_1;
来查看整合效果。
  • 在HBase中扫描表记录:
    • scan 'test'
  • 在Hive中选取所有表记录:
    • select * from hbase_table_1;

至此,我们可以利用Hive的Query Language以一种熟悉的,类sql 的方式操纵HBase。

使用JBDC操作Hive

HBase做一个数据库,自然也提供了jdbc规范的驱动,请看下面的例子:
  • 将$HBASE_HOME/lib/*.jar和$HBASE_HOME/lib/*.jar加入到项目的classpath下。
  • hbase-site.xml,hive-site.xml复制到src下。
  • 如下代码:
    package org.xiaom.hadoop.hive.test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.xiaom.hadoop.hive.bean.WordCount;
    
    public class HiveWithHibernate {
    	public static void main(String[] args) throws Exception {
    		Configuration conf = new Configuration().configure();
    		Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
    		Connection conn = DriverManager.getConnection(
    				"jdbc:hive://hadoop:10000/default", "", "");
    		Statement stmt = conn.createStatement();
    		ResultSet res = stmt.executeQuery("select * from hbase_table_1");
    		while (res.next()) {
    			System.out.println(res.getString(1) + "\t" + res.getString(2)
    					+ "\t" + res.getShort(3));
    		}
    	}
    }
    
    这里是上面用到的所有文件(已配置好)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值