如何访问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中存在的数据视图 有关更多详细信息,请参阅以下链接: