9

作为开发人员,我通过使用sqoop job. 问题是我们的数据分析师团队熟悉 MySQL 语法,这意味着他们可以HIVE轻松查询表。对于他们,我需要在 HIVE 中公开 HBase 表。我不想通过在 HIVE 中再次填充数据来复制数据。此外,复制数据将来可能会出现一致性问题。

我可以在不复制数据的情况下在 HIVE 中公开 HBase 表吗?如果是,我该怎么做?另外,如果我insert/update/delete的 HBase 表中的数据将更新的数据出现在 HIVE 中而没有任何问题?

有时,我们的数据分析团队会在 HIVE 中创建表格并填充数据。我可以将它们暴露给 HBase 吗?如果是,如何?

4

2 回答 2

12

HBase-Hive 集成:

在 Hive 中创建external tableHBase 表允许您在 Hive 中查询 HBase 数据,而无需复制数据。您可以只更新或删除 HBase 表中的数据,也可以在 Hive 中查看修改后的表。

例子:

假设您有一个包含 和 列的hbaseid表。nameemail

hive 的示例外部表命令:

CREATE EXTERNAL TABLE hivehbasetable(key INT, id INT,  username STRING, password STRING, email STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,id:id,name:username,name:password,email:email") TBLPROPERTIES("hbase.table.name" = "hbasetable");

有关 Hive-Hbase 集成的更多信息,请查看此处

于 2015-05-08T16:28:09.633 回答
1

使用 Apache Phoenix

一种快速的解决方案是在 HBase 表上使用 apache phoenix 层。Apache Phoenix 是一个接口,它使 OLTP SQL 查询能够在 Hbase NoSql DB 上使用。这没有任何额外的开销,而是使用 SQL 查询生成 HBase 中存在的数据视图。

有关更多详细信息,请参阅这些链接:

于 2020-02-03T22:50:04.730 回答