如何访问Hive&;中的HBase表;反之亦然?

如何访问Hive&;中的HBase表;反之亦然?,hive,hbase,sqoop,apache-hive,Hive,Hbase,Sqoop,Apache Hive,作为一名开发人员,我通过使用sqoop作业从现有的MySQL表导入数据,为我们的项目创建了HBase表。问题是我们的数据分析团队熟悉MySQL语法,这意味着他们可以轻松查询HIVE表。对于他们,我需要在配置单元中公开HBase表。我不想通过在配置单元中再次填充数据来复制数据。此外,复制数据在将来可能会有一致性问题 我可以在不复制数据的情况下公开配置单元中的HBase表吗?如果是,我该怎么做?另外,如果我insert/update/delete我的HBase表中的数据,更新后的数据是否会出现在配置

作为一名开发人员,我通过使用
sqoop作业
从现有的MySQL表导入数据,为我们的项目创建了HBase表。问题是我们的数据分析团队熟悉MySQL语法,这意味着他们可以轻松查询
HIVE
表。对于他们,我需要在配置单元中公开HBase表。我不想通过在配置单元中再次填充数据来复制数据。此外,复制数据在将来可能会有一致性问题

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


有时,我们的数据分析团队会创建表并在配置单元中填充数据。我可以让他们接触HBase吗?如果是,如何进行?

HBase配置单元集成:

通过在配置单元中为HBase表创建
外部表
,您可以查询要在配置单元中查询的HBase数据,而无需复制数据。您只需更新或删除HBase表中的数据,也可以在配置单元中查看修改后的表

示例:

假设您有一个包含列
id
name
email
的hbase表

配置单元的外部表命令示例:

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集成的更多信息,请使用Apache Phoenix查看

一个快速的解决方案是在HBase表上使用ApachePhoenix层。ApachePhoenix是一个支持通过Hbase NoSql数据库使用OLTP SQL查询的接口。这没有任何额外的开销,而是使用SQL查询生成HBase中存在的数据视图

有关更多详细信息,请参阅以下链接:


倒车怎么样?我有一个配置单元表并将其公开给HBase?@Abhishek只要您写入由HBasStorage Handler存储的配置单元表,该表及其包含的数据将存储在HBase中。您的团队可以在HIVE中创建任意数量的HBase存储表(外部或非外部),并插入。。。在其中选择…,一旦查询完成,数据将立即在HBase中可用。试试看。嗨,这很好用,我可以在hbase上创建配置单元表。现在,我希望动态地将记录插入到表中,但这需要大约45秒的时间。另一方面,我尝试将记录插入到类似的配置单元表中,花费的时间相对减少了30秒。我认为hbase会提高性能,尽管它是另一种方式。有什么方法可以在2-3秒内将数据插入蜂巢吗?多亏了你的回答,我在MapR上完成了这项工作。我想不支持时间戳吧?所以我们只能在蜂巢中得到最新的版本?