【问题标题】:How to split HBase row key into 2 columns in Hive table如何将 HBase 行键拆分为 Hive 表中的 2 列
【发布时间】:2020-11-07 17:30:47
【问题描述】:

HBase 表
行键:2020-02-02^ghfgewr3434555,cf:1 时间戳=1604405829275,值=true
行键:2020-02-02^ghfgewr3434555,cf:2 时间戳=1604405829275,值=true
rowkey: 2020-02-02^ghfgewr3434555, cf:3 时间戳=1604405829275, value=false
行键:2020-02-02^ghfgewr3434555,cf:4 时间戳=1604405829275,值=false

将 HBase 数据传输到 Hive 表中,如下所示

蜂巢表
日期 ========= Id ======== cf:no == boolean
2020-02-02 ==== ghfgewr3434555 == 1 ======= 真实
2020-02-02 ==== ghfgewr3434555 == 2 ======= 真
2020-02-02 ==== ghfgewr3434555 == 3 ======= 假
2020-02-02 ==== ghfgewr3434555 == 4 ======= 假

【问题讨论】:

    标签: hive hbase external-tables


    【解决方案1】:

    如果您只想将其传输以进行查询,您实际上可以在 hive 中创建一个连接到指定属性的该表

    CREATE TABLE foo(rowkey STRING, a STRING, b STRING)
    STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
    WITH SERDEPROPERTIES (‘hbase.columns.mapping’ = ‘:key,f:c1,f:c2’)
    TBLPROPERTIES (‘hbase.table.name’ = ‘bar’);
    

    正确的文档在这里: https://blog.cloudera.com/hbase-via-hive-part-1/

    【讨论】:

    • 是的,可以使用查询。但我需要将密钥分成 2 行。 “2020-02-02^ghfgewr343455”是一个键,我需要分成 2 部分,1 是日期,另一个是配置单元表中的 Id。将数据从 HBase 传输到 Hive 时如何拆分密钥?
    【解决方案2】:

    我已经使用 2 个表/视图解决了这个问题。第一个只是处理 HBase 表中的数据,第二个表/视图将 rowkey 分成 2 列。

    Hive 中的第一个表查询

    创建外部表 hbase_hive_table(key string, t1 boolean,t2 boolean) 由 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 与 SERDEPROPERTIES ("hbase.columns.mapping" = "cf:1#b, cf:2#b) TBLPROPERTIES ("hbase.table.name" = "hbase_table");

    Hive 中的第一个表/视图查询

    如果不存在则创建视图 hbase_hive_view as SELECT CONCTNS.rowkey[0] AS date, CONCTNS.rowkey[1] AS req_id, t1, t2 FROM (SELECT split(key,'\^') AS rowkey, t1, t2 FROM hbase_hive_table) CONCTNS;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      相关资源
      最近更新 更多