我正在尝试以HBase表('test_table)为源创建Hive外部表。HBase表是在HBase名称空间" Test_namespace"下创建的。在应用程序的其他部分中,我使用以下syntx
访问表test_namespace:test_table或hbase://test_namespace:test_table
遵循相同的方法,我创建了一个Hive脚本
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");
但是当我执行Hive脚本时,我找不到错误表。如果我尝试
hbase://test_namespace:test_table
它抛出无效的表名称错误。
我尝试使用Google了解如何在Hive脚本中引用HBase名称空间。但是没有运气。
事先感谢您的帮助!
我尝试了相同的问题,并且效果很好,
以下是步骤序列
a。在HBase Shell
中执行操作创建名称空间(即HBase中的数据库/模式)
create_namespace'krishna'
检查名称空间的存在
list_namespace
在命名空间内创建表格
创建'krishna:hivehbase','评级'
验证命名空间内的表创建
list_namespace_tables'krishna'
添加行和列Family(填充表)
将'krishna:hivehbase','row1',"评分:userId','user1'将"奎师那:hivehbase"," row1","评分:bookid"," book1"将"奎师那:hivehbase"," row1","评分:评级"," 1"
将'krishna:hivehbase','row2',"评分:userId','user2'将"克里希纳:hivehbase"," row2","评分:bookid','book1'将"奎师那:hivehbase"," row2","评分:等级"," 3"
将'krishna:hivehbase','row3',"评分:userid','user2'将"奎师那:hivehbase"," row3","评分:bookid','book2'将"奎师那:hivehbase"," row3","评分:评级"," 3"
将'krishna:hivehbase','row4',"评分:userId"," user2"将"奎师那:hivehbase"," row4","评分:bookid','book4'将"奎师那:hivehbase"," row4","评分:评级",'1'
验证表数据
扫描'奎师那:hivehbase'
b。在蜂巢壳中执行操作
创建外部表
创建外部表Hbasehive_table(键字符串,UserId字符串,bookId字符串,评分int)由'org.apache.hadoop.hadoop.hive.hbase.hbase.hbase.hbasestoragehandler'使用serdeproperties(" hbase.column.columns.mapping)评分:USERID,评分:BookId,评分:评分")TBlProperties(" Hbase.table.name" =" Krishna:hivehbase");
验证外部表
SELECT *来自Hbasehive_table;