我正在尝试使用HBase表(' test_table)创建Hive外部表作为源。 HBase表是在HBase命名空间' test_namespace'下创建的。 在应用程序的其他部分,我使用以下syntx
访问该表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");
但是当我执行hive脚本时,我找不到错误表。 如果我试试
hbase://test_namespace:test_table
它会抛出无效的表名错误。
我试图谷歌如何在hive脚本中引用HBase命名空间。但没有运气。
提前感谢您的帮助!
答案 0 :(得分:1)
我尝试过同样的问题但效果很好,
以下是步骤序列
创建命名空间(即HBase中的数据库/模式)
create_namespace'krishna'
检查命名空间的存在
list_namespace
在命名空间
中创建表创建'krishna:hivehbase','评级'
验证命名空间内的表创建
list_namespace_tables'krishna'
添加行和列家庭(填充表格)
把'krishna:hivehbase','row1','rating:userid','user1' 把'krishna:hivehbase','row1','评级:bookid','book1' 把'krishna:hivehbase','row1','评级:评级','1'
把'krishna:hivehbase','row2','rating:userid','user2' 把'krishna:hivehbase','row2','评级:bookid','book1' 把'krishna:hivehbase','row2','评级:评级','3'
把'krishna:hivehbase','row3','rating:userid','user2' 把'krishna:hivehbase','row3','评级:bookid','book2' 把'krishna:hivehbase','row3','评级:评级','3'
把'krishna:hivehbase','row4','rating:userid','user2' 把'krishna:hivehbase','row4','评级:bookid','book4' 把'krishna:hivehbase','row4','评级:评级','1'
验证表格数据
扫描'krishna:hivehbase'
创建外部表
CREATE EXTERNAL TABLE hbasehive_table(key string,userid string,bookid string,rating int)STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'with SERDEPROPERTIES(“hbase.columns.mapping”=“:key,评级:用户ID,评级:bookid,评级:评级“)TBLPROPERTIES(”hbase.table.name“=”krishna:hivehbase“);
验证外部表
从hbasehive_table中选择*;