Mapreduce 如何在hbase中联接表
我必须在Hbase中连接表 我集成了HIVE和HBase,效果很好。我可以使用配置单元进行查询 但是有人能帮我在不使用配置单元的情况下如何在HBase中连接表吗。我认为使用mapreduce我们可以做到这一点,如果可以,任何人都可以分享一个我可以参考的工作示例 请分享你的意见 我心里有个办法。就是 如果我需要连接表A x B x C; 我可以使用TableMapReduceUtil迭代A,然后在TableMapper中从B和C获取数据。然后使用TableReducer写回另一个表YMapreduce 如何在hbase中联接表,mapreduce,hbase,Mapreduce,Hbase,我必须在Hbase中连接表 我集成了HIVE和HBase,效果很好。我可以使用配置单元进行查询 但是有人能帮我在不使用配置单元的情况下如何在HBase中连接表吗。我认为使用mapreduce我们可以做到这一点,如果可以,任何人都可以分享一个我可以参考的工作示例 请分享你的意见 我心里有个办法。就是 如果我需要连接表A x B x C; 我可以使用TableMapReduceUtil迭代A,然后在TableMapper中从B和C获取数据。然后使用TableReducer写回另一个表Y 这是一种很好
这是一种很好的方法。这当然是一种方法,但如果您每扫描一行进行2次随机读取,那么您的速度将急剧下降。如果您正在显著地过滤行,或者在中有一个小的数据集,这可能不是问题 排序合并联接 但是,HBase 0.96中提供的最佳方法是MultipleTableInput方法。这意味着它将扫描表A,并使用唯一的键写入其输出,该键将允许表B匹配 例如,表A发射(b_id,A_info)和表b将发射(b_id,b_info)合并到减速器中 这是排序合并联接的一个示例 嵌套循环联接 如果您是按行键连接,或者连接属性是按照表B排序的,那么在每个任务中都可以有一个扫描器实例,该扫描器从表B中顺序读取,直到找到它要查找的内容为止 例如,表A row key=“companyId”和表B row key=“companyId\u employeeId”。然后,对于表A中的每个公司,您可以使用嵌套循环算法获得所有员工 伪代码: 这是嵌套循环联接的一个示例 更详细的连接算法如下:
for(company in TableA):
for(employee in TableB):
if employee.company_id == company.id:
emit(company.id, employee)