hive 如何在配置单元表中将HBase行键拆分为2列

7hiiyaii  于 2022-11-05  发布在  Hive
关注(0)|答案(2)|浏览(191)

HBase表
行关键字:2020-02-02^ghfgewr3434555,cf:1时间戳=1604405829275,值=真
行关键字:2020-02-02^ghfgewr3434555,cf:2时间戳=1604405829275,值=真
行关键字:2020-02-02^ghfgewr3434555,cf:3时间戳=1604405829275,值=假
行关键字:2020-02-02^ghfgewr3434555,cf:4时间戳=1604405829275,值=假
将HBase数据传输到配置单元表中,如下所示
配置单元表
日期========== ID ======= cf:否==布尔值
2020年02月02日=====第一个===========真
2020年02月02日========第二个==========真
2020年02月02日====第三期========假
2020年02月02日=====第3434555号===== 4条========假

ncecgwcz

ncecgwcz1#

如果您只想传输它以供查询,则实际上可以在配置单元中创建到该表的连接,并指定属性

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/

13z8s7eq

13z8s7eq2#

我已经用两个表/视图解决了这个问题。第一个表/视图只是复制HBase表中的数据,第二个表/视图将行键分成两列。
配置单元中的第一个表查询

CREATE EXTERNAL TABLE hbase_hive_table(
  key string,
  t1 boolean,
  t2 boolean
) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH 
  SERDEPROPERTIES ("hbase.columns.mapping" = "cf:1#b,cf:2#b) 
  TBLPROPERTIES ("hbase.table.name" = "hbase_table");

配置单元中的第一个表/视图查询

CREATE VIEW IF NOT EXISTS 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;

相关问题