使用hbase表中的部分数据创建外部配置单元表

时间:2016-10-21 18:26:09

标签: hive hbase

我可以创建一个这样的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'的行。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

如果我理解正确你就不能动态地做到。 hive-hbase处理程序不提供任何此类DDL功能来应用过滤器 可能你可以创建自己的解决方案来实现它:

  • 在DDL中添加TBLPROPERTIES以对记录类型进行分类,特定表格指向 - _type(应用,评论)。例如TBLPROPERTIES( 'record.type', '_应用程序')
  • 下载hive hbase handler源代码,在设置方法中将开始和结束行键或rowkey过滤器设置为HBaseScanRange.java。从TBLPROPERTIES中提取过滤条件。请阅读custom serde了解详情。
  • 使用自定义配置单元hbase处理程序。

否则,创建托管表 -

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';