`
thomas0988
  • 浏览: 483988 次
  • 性别: Icon_minigender_1
  • 来自: 南阳
社区版块
存档分类
最新评论

Hive HBase 整合(中文)

 
阅读更多
hive hbase整合,要求比较多,1.hive的得是0.6.0(当前最新的版本)
2.hive本身要求hadoop的最高版本是hadoop-0.20.2
3.要求hbase的版本是0.20.3,其他版本需要重新编译hive_hbase-handler
但是新版的hbase(0.90)变动特别大,根本无法从编译。这点比较恶心,hbase目前升级比较快,当前是0.90(从0.20.6直接跳到0.89),至于为什么这样跳跃,参考官方的解释http://wiki.apache.org/hadoop/Hbase/HBaseVersions


1)启动Hbase,
要求hbase-0.20.3,zookeeper-3.2.2
如果使用的不是hbase-0.20.3需要重新编译hive_hbase-handler.jar

2)单节点HBase的连接
./bin/hive -hiveconf hbase.master=master:60000

3)集群HBase的连接
1.启动zookeeper
2.启动hbase
3.启动hive,添加zookeeper的支持
Java代码 复制代码 收藏代码
  1. ./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B  
  1. ./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B  

//所有的zookeeper节点

二、插入数据
启动
Java代码 复制代码 收藏代码
  1. ./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003  
  1. ./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003  


hive
1.创建hbase识别的数据库
Java代码 复制代码 收藏代码
  1. CREATE TABLE hbase_table_1(key int, value string)    
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")   
  4. TBLPROPERTIES ("hbase.table.name" = "xyz");  
  1. CREATE TABLE hbase_table_1(key int, value string)   
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")  
  4. TBLPROPERTIES ("hbase.table.name" = "xyz");  

hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族



2.使用sql导入数据
i.预先准备数据

a)新建hive的数据表
Java代码 复制代码 收藏代码
  1. CREATE TABLE pokes (foo INT, bar STRING);   
  1. CREATE TABLE pokes (foo INT, bar STRING);   

b)批量插入数据
Java代码 复制代码 收藏代码
  1. hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;   
  1. hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;   

这个文件位于hive的安装目录下,examples/files/kv1.txt

Java代码 复制代码 收藏代码
  1. ii.使用sql导入hbase_table_1  
  1. ii.使用sql导入hbase_table_1  

Java代码 复制代码 收藏代码
  1. INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;  
  1. INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;  

注意,默认的启动会报错的
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.ExecDriver
启动的时候要添加
Java代码 复制代码 收藏代码
  1. -auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  
  1. -auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  


3查看数据
Java代码 复制代码 收藏代码
  1. hive> select * from  hbase_table_1;  
  1. hive> select * from  hbase_table_1;  

会显示刚刚插入的数据
86      val_86

hbase
1.登录hbase
Java代码 复制代码 收藏代码
  1. [root@master hbase]# ./bin/hbase shell  
  1. [root@master hbase]# ./bin/hbase shell  


2.查看表结构
Java代码 复制代码 收藏代码
  1. hbase(main):001:0> describe 'xyz'  
  2. DESCRIPTION                                                             ENABLED                                  
  3.  {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true                                     
  4.  RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>                                          
  5.   'false', BLOCKCACHE => 'true'}]}                                                                               
  6. 1 row(s) in 0.7460 seconds  
  1. hbase(main):001:0> describe 'xyz'  
  2. DESCRIPTION                                                             ENABLED                                 
  3.  {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true                                    
  4.  RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>                                         
  5.   'false', BLOCKCACHE => 'true'}]}                                                                              
  6. 1 row(s) in 0.7460 seconds  


3.查看加载的数据

Java代码 复制代码 收藏代码
  1. hbase(main):002:0> scan 'xyz'  
  2. ROW                          COLUMN+CELL                                                                                          
  3.  86                          column=cf1:val, timestamp=1297690405634, value=val_86    
  1. hbase(main):002:0> scan 'xyz'  
  2. ROW                          COLUMN+CELL                                                                                         
  3.  86                          column=cf1:val, timestamp=1297690405634, value=val_86    
                                                    
1 row(s) in 0.0540 seconds
可以看到,在hive中添加的数据86,已经在hbase中了

4.添加数据
Java代码 复制代码 收藏代码
  1. ' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'     
  2. 0 row(s) in 0.0630 seconds  
  1. ' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'    
  2. 0 row(s) in 0.0630 seconds  


Hive
参看hive中的数据
Java代码 复制代码 收藏代码
  1. hive> select * from hbase_table_1;                                               
  2. OK   
  3. 100     www.360buy.com   
  4. 86      val_86   
  5. Time taken: 8.661 seconds  
  1. hive> select * from hbase_table_1;                                              
  2. OK  
  3. 100     www.360buy.com  
  4. 86      val_86  
  5. Time taken: 8.661 seconds  

刚刚在hbase中插入的数据,已经在hive里了

hive访问已经存在的hbase
使用CREATE EXTERNAL TABLE
Java代码 复制代码 收藏代码
  1. CREATE EXTERNAL TABLE hbase_table_2(key int, value string)    
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")   
  4. TBLPROPERTIES("hbase.table.name" = "some_existing_table");  
  1. CREATE EXTERNAL TABLE hbase_table_2(key int, value string)   
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")  
  4. TBLPROPERTIES("hbase.table.name" = "some_existing_table");  




三、多列和多列族(Multiple Columns and Families)
1.创建数据库

Java代码 复制代码 收藏代码
  1. CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)    
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES (   
  4. "hbase.columns.mapping" = ":key,a:b,a:c,d:e"  
  5. );  
  1. CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)   
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES (  
  4. "hbase.columns.mapping" = ":key,a:b,a:c,d:e"  
  5. );  

2.插入数据
Java代码 复制代码 收藏代码
  1. INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2    
  2. FROM pokes WHERE foo=98 OR foo=100;  
  1. INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2   
  2. FROM pokes WHERE foo=98 OR foo=100;  


这个有3个hive的列(value1和value2,value3),2个hbase的列族(a,d)
Hive的2列(value1和value2)对应1个hbase的列族(a,在hbase的列名称b,c),hive的另外1列(value3)对应列(e)位于列族(d)

3.登录hbase查看结构
Java代码 复制代码 收藏代码
  1. hbase(main):003:0> describe "hbase_table_2"  
  2. DESCRIPTION                                                             ENABLED                                  
  3.  {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                     
  4.  ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                          
  5.  EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                           
  6.  'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                          
  7.  _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                     
  8. 1 row(s) in 1.0630 seconds  
  1. hbase(main):003:0> describe "hbase_table_2"  
  2. DESCRIPTION                                                             ENABLED                                 
  3.  {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                    
  4.  ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                         
  5.  EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                          
  6.  'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                         
  7.  _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                    
  8. 1 row(s) in 1.0630 seconds  


4.查看hbase的数据
Java代码 复制代码 收藏代码
  1. hbase(main):004:0> scan 'hbase_table_2'  
  2. ROW                          COLUMN+CELL                                                                         
  3.  100                         column=a:b, timestamp=1297695262015, value=val_100                                  
  4.  100                         column=a:c, timestamp=1297695262015, value=101                                      
  5.  100                         column=d:e, timestamp=1297695262015, value=102                                      
  6.  98                          column=a:b, timestamp=1297695242675, value=val_98                                   
  7.  98                          column=a:c, timestamp=1297695242675, value=99                                       
  8.  98                          column=d:e, timestamp=1297695242675, value=100                                      
  9. 2 row(s) in 0.0380 seconds  
  1. hbase(main):004:0> scan 'hbase_table_2'  
  2. ROW                          COLUMN+CELL                                                                        
  3.  100                         column=a:b, timestamp=1297695262015, value=val_100                                 
  4.  100                         column=a:c, timestamp=1297695262015, value=101                                     
  5.  100                         column=d:e, timestamp=1297695262015, value=102                                     
  6.  98                          column=a:b, timestamp=1297695242675, value=val_98                                  
  7.  98                          column=a:c, timestamp=1297695242675, value=99                                      
  8.  98                          column=d:e, timestamp=1297695242675, value=100                                     
  9. 2 row(s) in 0.0380 seconds  


5.在hive中查看
Java代码 复制代码 收藏代码
  1. hive> select * from hbase_table_2;   
  2. OK   
  3. 100     val_100 101     102  
  4. 98      val_98  99      100  
  5. Time taken: 3.238 seconds  
分享到:
评论

相关推荐

    HIVE和HBASE的整合

    在HIVE中创建HBASE的外表,是实现HIVE和HBASE整合的关键步骤。外表是一种虚拟表,它不存储实际数据,而是指向HBASE中的实际数据。通过创建外表,HIVE可以直接访问HBASE中的数据,并且可以使用类SQL和各种函数来操作...

    hive和hbase整合

    【Hive与HBase整合详解】 Hive和HBase是两个大数据处理的重要组件。Hive提供了基于SQL的查询语言(HQL)来处理大规模的数据,适合于离线批处理;而HBase则是一个NoSQL数据库,它基于Google的Bigtable设计,提供高...

    hive与hbase整合经验谈

    将Hive与HBase整合,主要是为了结合两者的优点,实现批量处理和实时查询的无缝对接。整合的关键在于Hive的外部表功能,通过创建指向HBase表的外部表,我们可以用Hive的HQL查询HBase中的数据。 整合步骤如下: 1. *...

    大数据工具篇之Hive与HBase整合完整教程

    ### 大数据工具篇之Hive与HBase整合完整教程 #### 一、引言 在大数据处理领域,Hive 和 HBase 是两种非常重要的工具。Hive 是一种数据仓库工具,可以用来进行数据提取、转换和加载(ETL),同时提供了一种 SQL ...

    hive与hbase整合经验谈.pdf

    Hive与HBase整合后可以实现多样的使用场景,包括但不限于数据的批量迁移、实时更新、周期性加载以及复杂的数据分析操作。 整合Hive与HBase后,可以在Hive中进行数据的插入、查询、连接(JOIN)、分组(GROUPBY)...

    Hive整合HBase资源文件.zip

    1. **Hive与HBase的集成背景**:介绍为什么需要将Hive与HBase整合,通常是因为需要结合Hive的数据处理能力与HBase的实时查询和高并发性能。 2. **Hive-HBase连接器**:文件"hive-hbase-handler-1.2.1.jar"是Hive...

    hive 整合 hbase

    ### Hive整合HBase知识点解析 #### 一、HBase简介及特性 HBase是一个构建在Hadoop分布式文件系统(HDFS)之上的分布式、可扩展的列式存储系统。它被设计用来处理海量数据,提供了高可靠性和高性能的数据访问能力。...

    Hive与Hbase的整合

    Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性

    hive-hbase-handler-1.2.2.jar

    hive和hbase整合的时候,如果出现不兼容的情况需要手动编译:hive-hbase-hander-1.2.2.jar把这个jar替换掉hive/lib里的那个jar包

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】 -

    本文将详细介绍Hadoop、HBase和Hive的版本整合兼容性,以及如何确保它们在不同版本间顺畅协作。 首先,Hadoop作为基础平台,其版本选择会直接影响到HBase和Hive的运行。Hadoop的主要组件包括HDFS(分布式文件系统)...

    scala-hive-HBASE-Api.7z

    在Java开发中,为了将这些组件整合在一起,你需要相关的jar包,例如包含Hive和HBase的API。这些API允许你在Scala程序中直接操作Hive和HBase,简化了数据处理的流程。例如,`scalatestOne`可能是一个Scala测试项目,...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】

    本文将介绍Hadoop、HBase、Hive以及ZooKeeper的版本整合兼容性,以及如何根据版本找到兼容性信息。 首先,Hadoop是一个开源的分布式存储和计算框架,它由HDFS和MapReduce两部分组成。HDFS用于存储大数据,而...

    (编译过的)hive-hbase-handler-1.2.1.jar

    hive和hbase的整合所需要的编译后的jar包。 注意:这里的hbase版本为:1.2.1 hive的版本为:1.2.1

    HBase与hive整合 和 hive与hdfs结合的效率对比1

    《HBase与Hive整合及效率对比分析》 在大数据处理领域,HBase和Hive分别扮演着不同的角色。HBase是一款基于Hadoop的分布式数据库,适用于实时查询和大规模数据存储,而Hive则是一个数据仓库工具,侧重于离线批处理...

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结

    6. Hive与HBase整合需要做哪些准备工作? **详细解答:** **1. MySQL的使用:** - 不需要在每个客户端安装MySQL,只需在服务器端安装即可。 - MySQL用于存储Hive的元数据,提高性能和可靠性。 **2. 客户端与...

    HIVE和HBASE区别

    "HIVE和HBASE区别" HIVE和HBASE是两种基于Hadoop的不同技术,分别是数据仓库和Key/Value系统。它们之间有很多区别,包括设计理念、应用场景、查询语言等方面。 HIVE HIVE是一个构建在Hadoop基础设施之上的数据...

    hive-hbase-handler-3.1.1.jar

    HBase2.1.3整合Hive3.1.2,Hive官方的hive-hbase-handler-3.1.1.jar包不好用,自己编译后的,确认好用

    HADOOP+HBASE+HIVE整合工程和文档

    6. **监控与优化**:整合工程中需要监控Hadoop、HBase和Hive的性能,通过Ambari等工具进行资源调度、故障排查和性能调优。 在实际应用中,还会遇到如数据安全、容错机制、备份恢复、性能优化等挑战。对于开发者来说...

Global site tag (gtag.js) - Google Analytics