我正在尝试使用HBase表('test_table)作为源创建Hive外部表。
HBase表在HBase命名空间“test_namespace”下创建。
在应用程序的其他部分,我使用以下语法访问表

test_namespace:test_table或hbase:// test_namespace:test_table

按照相同的方法,我创建了一个配置单元脚本

CREATE EXTERNAL TABLE IF NOT EXISTS TEST_INDIVIDUAL(
    key    string,
    test   string,
    photo  string,
    location string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping"="key,default:test,default:photo,default:location")
TBLPROPERTIES("hbase.table.name" = "test_namespace:test_table");

但是,当我执行配置单元脚本时,我得到未找到错误表。
如果我尝试
hbase://test_namespace:test_table

它抛出无效的表名错误。

我试图在Google上搜索如何在Hive脚本中引用HBase命名空间。但是没有运气。

先谢谢您的帮助!

最佳答案

我曾尝试过相同的问题,但效果很好,

以下是步骤顺序,

A.在HBase Shell中执行操作

  • 创建 namespace (即HBase中的数据库/架构)

    create_namespace'krishna'
  • 检查 namespace 的存在

    list_namespace
  • 在 namespace 内创建表

    创建'krishna:hivehbase','ratings'
  • 验证 namespace 中的表创建

    list_namespace_tables'krishna'
  • 添加行和列族(填充表)

    放置'krishna:hivehbase','row1','ratings:userid','user1'
    放置'krishna:hivehbase','row1','ratings:bookid','book1'
    放'krishna:hivehbase','row1','ratings:rating','1'

    将'krishna:hivehbase','row2','ratings:userid','user2'
    放入'krishna:hivehbase','row2','ratings:bookid','book1'
    放'krishna:hivehbase','row2','ratings:rating','3'

    将'krishna:hivehbase','row3','ratings:userid','user2'
    放入'krishna:hivehbase','row3','ratings:bookid','book2'
    放入'krishna:hivehbase','row3','ratings:rating','3'

    将'krishna:hivehbase','row4','ratings:userid','user2'
    放入'krishna:hivehbase','row4','ratings:bookid','book4'
    放置'krishna:hivehbase','row4','ratings:rating','1'
  • 验证表数据

    扫描'krishna:hivehbase'

  • B.在Hive Shell中执行操作
  • 创建外部表

    用SERDEPROPERTIES(“hbase.columns.mapping” =“:key,ratings:userid”创建外部表hbasehive_table(键字符串,用户ID字符串,书ID字符串,等级int)由'org.apache.hadoop.hive.hbase.HBaseStorageHandler'存储,ratings:bookid,ratings:rating“)TBLPROPERTIES(” hbase.table.name“=” krishna:hivehbase“);
  • 验证外部表

    从hbasehive_table选择*;
  • 07-24 09:53