2016-10-21 50 views
0

我可以創建一個蜂巢表像這樣從HBase的需要數據部分數據:創建外部蜂巢表使用從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的表中包含兩種類型的項目,一個是「應用」和其他是'評論',一個名爲_type的鍵定義了它是哪種類型的項目。我想在同一個hbase表格的hive中創建兩個獨立的外部表格,其中一行將帶有_type ='review'的行,另一行將帶有_type ='app'的行。我如何去做這件事?

回答

0

如果我正確地理解了你,你不能在飛行中做到這一點。 hive-hbase處理程序不提供任何此類DDL功能來應用過濾器。
也許你可以創建自己的解決方案來實現它:

  • 添加TBLPROPERTIES在DDL來分類的記錄類型,特定表點TO- _type(應用程序,評論)。例如TBLPROPERTIES('record.type','_ apps')
  • 下載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';