如何将 Table 从 HBase 转移到 Hive?

How transfer a Table from HBase to Hive?

如何将 HBase table 正确地转移到 Hive 中?

我之前试过的你能在这个问题中读到吗 How insert overwrite table in hive with diffrent where clauses? (我制作了一个 table 来导入所有数据。这里的问题是数据仍然在行中而不是在列中。所以我为新闻、社交和所有具有特定 where 子句的人制作了 3 tables . 之后我在 tables 上进行了 2 次连接,得到了结果 table。所以我总共有 6 个表,这并不是真正有效的!)

总结一下我的问题:在 HBase 中,列族被保存为这样的行。

count   verpassen   news    1
count   verpassen   social  0
count   verpassen   all 1

我想在 Hive 中实现的是这样的数据结构:

name      news    social   all
verpassen 1       0        1

我该怎么做?

下面是可以使用的方法。

使用 hbase 存储处理程序在 hivetable 中创建

示例脚本

CREATE TABLE hbase_table_1(key string, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:val") TBLPROPERTIES ("hbase.table.name" = "test");

我将您提供的示例数据加载到外部配置单元 table。

select name,collect_set(concat_ws(',',type,val)) input from TESTTABLE group by name ;

我按 name.The 对数据进行分组,上述查询的结果输出将是

现在我编写了一个自定义映射器,它将输入作为输入参数并发出值。

from (select '["all,1","social,0","news,1"]' input from TESTTABLE group by name) d MAP d.input Using 'python test.py' as all,social,news

或者,您可以使用输出插入到另一个 table 中,该列的名称为 name,all,social,news

希望对您有所帮助