Hive HBase 集成

本文介绍了Hive与HBase的集成,包括Avro数据存储在HBase列中的方法,列映射的配置,以及如何创建和访问HBase表。Hive的HBase存储处理程序需要特定版本的HBase、Guava和ZooKeeper jar,并且需要设置正确的配置属性。文章还展示了如何进行数据插入和查询,以及列映射的规则和注意事项。
摘要由CSDN通过智能技术生成

Avro 数据存储在 HBase 列中

版本信息:

Avro 数据存储在 HBase 列中 从 Hive 0.9.0 开始,HBase 集成至少需要 HBase 0.92, 早期版本的 Hive 使用 HBase 0.89/0.90。

Hive 1.x 将与 HBase 0.98.x 及更低版本保持兼容。 Hive 2.x 将与 HBase 1.x 及更高版本兼容。(有关详细信息,请参阅 HIVE-10990。) 想要使用 Hive 1.x 使用 HBase 1.x 的消费者需要自己编译 Hive 1.x 流代码。

介绍

此文章记录了最初在 HIVE-705 中引入的 Hive/HBase 集成支持。此功能允许 Hive QL 语句访问 HBase 表以进行读取 (SELECT) 和写入 (INSERT)。甚至可以通过连接和联合将 HBase 表的访问与本机 Hive 表相结合。

用法

存储处理程序构建为独立模块 hive-hbase-handler-x.y.z.jar,它必须在 Hive 客户端辅助路径以及 HBase、Guava 和 ZooKeeper jar 上可用。它还需要设置正确的配置属性才能连接到正确的 HBase 主服务器。

  • 这是一个在源构建环境中使用 CLI 的示例,目标是单节点 HBase 服务器。 (请注意,Hive 0.9.0 中的 jar 位置和名称已更改,因此对于早期版本,需要进行一些更改。)

    $HIVE_SRC/build/dist/bin/hive --auxpath $HIVE_SRC/build/dist/lib/hive-hbase-handler-0.9.0.jar,$HIVE_SRC/build/dist/lib/hbase-0.92.0.jar,$HIVE_SRC/build/dist/lib/zookeeper-3.3.4.jar,$HIVE_SRC/build/dist/lib/guava-r09.jar --hiveconf hbase.master=hbase.yoyodyne.com:60000
    
  • 这是一个以分布式 HBase 集群为目标的示例,其中使用 3 个zookeeper 的仲裁来选举 HBase 主节点:

    $HIVE_SRC/build/dist/bin/hive --auxpath $HIVE_SRC/build/dist/lib/hive-hbase-handler-0.9.0.jar,$HIVE_SRC/build/dist/lib/hbase-0.92.0.jar,$HIVE_SRC/build/dist/lib/zookeeper-3.3.4.jar,$HIVE_SRC/build/dist/lib/guava-r09.jar --hiveconf hbase.zookeeper.quorum=zk1.yoyodyne.com,zk2.yoyodyne.com,zk3.yoyodyne.com
    
  • 处理程序需要 Hadoop 0.20 或更高版本,并且仅通过依赖版本 hadoop-0.20.x、hbase-0.92.0 和 zookeeper-3.3.4 进行了测试。如果您不使用 hbase-0.92.0,则需要使用与您的版本匹配的 HBase jar 重建处理程序,并相应地更改上面的 --auxpath 。不使用匹配版本会导致误导性的连接失败,例如 MasterNotRunningException,因为 HBase RPC 协议经常变化。

    为了创建一个由 Hive 管理的新 HBase 表,请在 CREATE TABLE 上使用 STORED BY 子句:

    CREATE TABLE hbase_table_1(key int, value string) 
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
    TBLPROPERTIES ("hbase.table.name" = "xyz", "hbase.mapred.output.outputtable" 	= "xyz");
    
  • hbase.columns.mapping 属性是必需的,将在下一节中解释。 hbase.table.name 属性是可选的;它控制 HBase 已知的表的名称,并允许 Hive 表具有不同的名称。在此示例中,该表在 Hive 中称为 hbase_table_1,在 HBase 中称为 xyz。如果未指定,则 Hive 和 HBase 表名称将相同。 hbase.mapred.output.outputtable 属性是可选的;如果您打算向表中插入数据,则需要它(该属性由 hbase.mapreduce.TableOutputFormat 使用)

    执行上述命令后,您应该能够在 HBase shell 中看到新的(空)表:

    $ hbase shell
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Version: 0.20.3, r902334, Mon Jan 25 13:13:08 PST 2010
    hbase(main):001:0> list
    xyz                                                                                                           
    1 row(s) in 0.0530 seconds
    hbase(main):002:0> describe "xyz"
    DESCRIPTION                                                             ENABLED                               
     {
         NAME => 'xyz', FAMILIES => [{
         NAME => 'cf1', COMPRESSION => 'NONE', VE true                                  
     RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>                                       
      'false', BLOCKCACHE => 'true'}]}                                                                            
    1 row(s) in 0.0220 seconds
    hbase(main):003:0> scan "xyz"
    ROW                          CO
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问题不太大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值