我正在尝试使用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中执行操作
create_namespace'krishna'
list_namespace
创建'krishna:hivehbase','ratings'
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选择*;