Hadoop 使用MapReduce而不是HBase索引进行配置单元到HBase的集成?

Hadoop 使用MapReduce而不是HBase索引进行配置单元到HBase的集成?,hadoop,hive,hbase,Hadoop,Hive,Hbase,我的印象是,如果将rowkey传递给where子句,那么在HBase表的顶部创建的配置单元表将放弃MapReduce并完全利用HBase索引。但是,我的查询使用MapReduce,因此速度非常慢 我创建了一个HBase表,如下所示: create '/app/SubscriptionBillingPlatform/Shishir','cf' 我为HBase表创建了两个外部配置单元表,一个用于A、B、C列,另一个用于D、E、F列: 我使用“abc”作为行键,将3个值放入hbase shell中

我的印象是,如果将rowkey传递给where子句,那么在HBase表的顶部创建的配置单元表将放弃MapReduce并完全利用HBase索引。但是,我的查询使用MapReduce,因此速度非常慢

我创建了一个HBase表,如下所示:

create '/app/SubscriptionBillingPlatform/Shishir','cf'
我为HBase表创建了两个外部配置单元表,一个用于A、B、C列,另一个用于D、E、F列:

我使用“abc”作为行键,将3个值放入hbase shell中的表中:

put '/app/SubscriptionBillingPlatform/Shishir','abc','cf:a','a'
put '/app/SubscriptionBillingPlatform/Shishir','abc','cf:b','b'
put '/app/SubscriptionBillingPlatform/Shishir','abc','cf:c','c'
回到配置单元外壳,然后启动查询:

select * from shishir1 where key='abc';


我希望这几乎和从HBase内部查询数据一样快。但是,Hive HBase集成使用Map Reduce而不是HBase索引。有没有办法让Hive HBase集成放弃Mapreduce并完全利用HBase索引,或者我误解了这种可能性?

那么,您如何推断它在执行MR作业时没有使用HBase索引?如果要优化三条记录,请转到HBase shell并直接查询。@ThomasJungblut获取一行需要33秒,而不是0.33秒。但我明白你的意思,重新措辞了这个问题。因此,你的问题归结为:为什么HBase上的Hive不是HBase上的rowkeys上的SQL引擎,而不是HBase上的MR?@ThomasJungblut在最后一段中提到了“或者我误解了这种可能性?”我们无法从你给我们的信息中判断?MR工作真的读了3张唱片还是只读了1张?这有关系吗?不,因为启动MR作业可能需要33秒。你要找的是ApachePhoenix,不是Hive。