如何将 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
希望对您有所帮助
如何将 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
希望对您有所帮助