我的客户有一个计算场景,一些数据存储在群集A中的Hive中,而其他一些数据存储在群集B中的Hbase中,然后他们想要用两种表格进行一些连接操作。
有没有办法让我在Hive中这样做:
select hive_table.col1, hbase_table.col2 from hive_table inner join hbase_table on hive_table.id = hbase_table.id
hive表和hbase表存在于不同的集群中。
答案 0 :(得分:2)
是的,可以将 Hive表(table1-假定它位于HDFS中)与 Hbase表(table2-hbase表)结合在一起。但是不建议这样做,因为当您尝试加入时,HBase在全表扫描中效率不高。最好的方法是将Hbase表转换为实木复合地板或AVRO。现在Hive的table1和Hbase的table2都驻留在HDFS中,这使其效率更高。
简而言之,我们可以联接Hive Metastore存储的任何表。 Hive表是否基于HDFS,Hbase构建并不重要。只要我们在Hive Metastore中拥有架构,就可以加入它们。假定Hive元存储包含两个表的模式。
select hive_table.col1, hbase_table.col2 from hive_table inner join hbase_table on (hive_table.id = hbase_table.id);