我可以创建一个这样的hive表,它从hbase中获取数据:
CREATE EXTERNAL TABLE app_store_data
(key string,
type string,
name string,
country string,
price float)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
("hbase.columns.mapping" = ":key,cf:_type,cf:name, cf:country, cf:price")
TBLPROPERTIES ("hbase.table.name" = "DEBUG_items_app_store");
但是,我的hbase表包含两种类型的项目,一种是'apps',另一种是'reviews',一个名为_type的键定义了它的哪种类型的项。我想在hive中从同一个hbase表创建两个单独的外部表,一个用_type ='review'获取行,另一个用于_type ='app'的行。我该怎么做呢?
答案 0 :(得分:0)
如果我理解正确你就不能动态地做到。 hive-hbase处理程序不提供任何此类DDL功能来应用过滤器 可能你可以创建自己的解决方案来实现它:
_type
(应用,评论)。例如TBLPROPERTIES( 'record.type', '_应用程序')HBaseScanRange.java
。从TBLPROPERTIES中提取过滤条件。请阅读custom serde了解详情。否则,创建托管表 -
create table app_store_data_apps as
select * from app_store_data where key like '%_apps';
create table app_store_data_reviews as
select * from app_store_data where key like '%_reviews';