千家信息网

Hive中怎么读取Hbase数据

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍Hive中怎么读取Hbase数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一步,启动hadoop,命令:./start-all.sh第二步,启动hive,
千家信息网最后更新 2026年11月01日Hive中怎么读取Hbase数据

这篇文章给大家介绍Hive中怎么读取Hbase数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

第一步,启动hadoop,命令:./start-all.sh

第二步,启动hive,命令:

./hive --auxpath /home/dream-victor/hive-0.6.0/lib/hive_hbase-handler.jar,/home/dream-victor/hive-0.6.0/lib/hbase-0.20.3.jar,/home/dream-victor/hive-0.6.0/lib/zookeeper-3.2.2.jar -hiveconf hbase.master=127.0.0.1:60000

这里,-hiveconf hbase.master=指向自己在hbase-site.xml中hbase.master的值

第三步,启动hbase,命令:./start-hbase.sh

第四步,建立关联表,这里我们要查询的表在hbase中已经存在所以,使用CREATE EXTERNAL TABLE来建立,如下:

CREATE EXTERNAL TABLE hbase_table_2(key string, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = "data:1") TBLPROPERTIES("hbase.table.name" = "test");

hbase.columns.mapping指向对应的列族;多列时,data:1,data:2;多列族时,data1:1,data2:1;

hbase.table.name指向对应的表;

hbase_table_2(key string, value string),这个是关联表

我们看一下HBase中要查询的表的结构,

hbase(main):001:0> describe 'test'DESCRIPTION                                                             ENABLED                                {NAME => 'test', FAMILIES => [{NAME => 'data', COMPRESSION => 'NONE',  true                                   VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY                                         => 'false', BLOCKCACHE => 'true'}]}                                                                          1 row(s) in 0.0810 secondshbase(main):002:0>

在看一下表中的数据,

hbase(main):002:0> scan 'test'ROW                          COLUMN+CELL                                                                       row1                        column=data:1, timestamp=1300847098583, value=value1                              row12                       column=data:1, timestamp=1300849056637, value=value3                              row2                        column=data:2, timestamp=1300847106880, value=value2                             3 row(s) in 0.0160 secondshbase(main):003:0>

列族:data:1、data:2两个

Key:row1、row12、row2

value:value1、value3、value2

hbase_table_2(key string, value string)中对应的test表中的row,value字段对应的是test表中的value

OK,现在可以来看看查询结果了,

我们在hive命令行中先查看一下hbase_table_2,

hive> select * from hbase_table_2;OKrow1    value1row12   value3Time taken: 0.197 secondshive>

对比一下test表中的列族为data:1的数据,

row1                        column=data:1, timestamp=1300847098583, value=value1                              row12                       column=data:1, timestamp=1300849056637, value=value3

和查询结果相符,没问题,然后我们在hbase中在给列族data:1新增一条数据,

hbase(main):003:0> put 'test','row13','data:1','value4'0 row(s) in 0.0050 secondshbase(main):004:0>

再查看hbase_table_2表,

hive> select * from hbase_table_2;OKrow1    value1row12   value3row13   value4Time taken: 0.165 secondshive>

新增数据value4出现了,说明可以通过hbase_table_2查询hbase的test表

下面我们来查询一下test表中value值为value3的数据,

hive> select * From hbase_table_2 where value='value3';Total MapReduce jobs = 1Launching Job 1 out of 1Number of reduce tasks is set to 0 since there's no reduce operatorStarting Job = job_201103231022_0001, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201103231022_0001Kill Command = /home/dream-victor/hadoop-0.20.2/bin/hadoop job  -Dmapred.job.tracker=localhost:9001 -kill job_201103231022_00012011-03-23 11:23:27,807 Stage-1 map = 0%,  reduce = 0%2011-03-23 11:23:30,824 Stage-1 map = 100%,  reduce = 0%2011-03-23 11:23:33,854 Stage-1 map = 100%,  reduce = 100%Ended Job = job_201103231022_0001OKrow12   value3Time taken: 11.929 secondshive>

和hbase的test表对比一下,

row12                       column=data:1, timestamp=1300849056637, value=value3

OK,这样我们就可以使用SQL来对hbase进行查询了。

以上只是在命令行里左对应的查询,我们的目的是使用JAVA代码来查询出有用的数据,其实这个也很简单,

首先,启动Hive的命令有点变化,使用如下命令:

./hive --service hiveserver

这里我们默认使用嵌入的Derby数据库,这里可以在hive-site.xml文件中查看到:

  javax.jdo.option.ConnectionURL  jdbc:derby:;databaseName=metastore_db;create=true//指定了数据库默认的名字和地址  javax.jdo.option.ConnectionDriverName  org.apache.derby.jdbc.EmbeddedDriver

在此,数据库链接的URL可以使用默认的:jdbc:hive://localhost:10000/default

有了上面的准备,下面我们就可以使用JAVA代码来读取数据了,如下:

public class HiveTest extends TestCase {        private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";        private Connection con;        private boolean standAloneServer = true;        public void testSelect() throws SQLException {                Statement stmt = con.createStatement();                ResultSet res = stmt.executeQuery("select * from hbase_table_2");                boolean moreRow = res.next();                while (moreRow) {                        System.out.println(res.getString(1)+","+res.getString(2));                        moreRow = res.next();                }        }        @Override        protected void setUp() throws Exception {                super.setUp();                Class.forName(driverName);                con = DriverManager.getConnection(                                "jdbc:hive://localhost:10000/default", "", "");        }}

结果,

row1,value1row12,value3row13,value4row14,test

查看一下hbase中的结果,

ROW                          COLUMN+CELL                                                                       row1                        column=data:1, timestamp=1300847098583, value=value1                              row12                       column=data:1, timestamp=1300849056637, value=value3                              row13                       column=data:1, timestamp=1300850443699, value=value4                              row14                       column=data:1, timestamp=1300867550502, value=test

关于Hive中怎么读取Hbase数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 查询 命令 结果 指向 数据库 代码 内容 更多 关联 帮助 不错 两个 兴趣 只是 可以通过 名字 地址 字段 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 A股互联网金融科技公司 互联网科技有限公司图片 一五八零互联网科技 互联网科技有限公司 翻译 北京三清互联网科技 互联网大会黑科技排名 南平创想时代互联网科技有限公司 宝灵互联网科技有限公司 荆州市昕露互联网络科技有限公司 互联网科技革命什么开始 米聚互联网科技南京有限公司排面 电子科技大学互联网创业大赛 富国互联网科技002692 易企秀互联网科技是做什么的 互联网科技接地气 易租星互联网科技有限公司 互联网领先科技成果宣传视频 承德科技产业互联网平台 现代科技的标志之一的互联网 互联网科技名片 河南云网互联网络科技有限公司 江苏根荣互联网科技 重生之互联网科技帝国 唐信互联网科技 互联网金融 科技创新 互联网实体化科技化 搜狐科技互联网 上海创道互联网络科技有限公司 亚光科技低轨卫星互联网
0