【问题标题】:Create external hive table using partial data from hbase table使用 hbase 表中的部分数据创建外部配置单元表
【发布时间】:2016-10-21 18:26:08
【问题描述】:

我可以创建一个像这样从 hbase 获取数据的 hive 表:

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 的键定义了它是哪种类型的项目。我想在 hive 中从同一个 hbase 表创建两个单独的外部表,一个将采用 _type = 'review' 的行,另一个将采用 _type = 'app' 的行。我该怎么做呢?

【问题讨论】:

    标签: hive hbase


    【解决方案1】:

    如果我对您的理解正确,您将无法立即执行此操作。 hive-hbase 处理程序不提供任何此类 DDL 功能来应用过滤器。
    您可能可以创建自己的解决方案来实现它:

    • 在 DDL 中添加 TBLPROPERTIES 以对记录类型进行分类,特定表指向-_type(应用程序,评论)。例如TBLPROPERTIES('record.type','_apps')
    • 下载hive hbase handler源代码,在setup方法中设置开始和结束行键或行键过滤器为HBaseScanRange.java。从 TBLPROPERTIES 中提取过滤条件。阅读custom serde了解更多详情。
    • 使用您的自定义 hive 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';
    

    【讨论】:

      猜你喜欢
      • 2016-11-30
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      相关资源
      最近更新 更多