问题
我们有多个HBase表:A,B,C。让我们假设,A是需要处理的记录队列。它可能包含平均2500万条记录。 A有用户ID。 B具有由每个用户执行的网站点击。 B可能包含数十亿行。 C有一些关于用户的辅助信息。
我们使用MapReduce作业对队列中的记录执行预测分析(成千上万个决策树)。问题的范围不包括实际的分析建模。
问题
欢迎任何其他建议。
我们正在使用cloudera CDH 3(hadoop,hbase)。
答案 0 :(得分:1)
解决起来不是很容易,但我可以建议使用bloomfilter + reduce join。
构建bloomfilter和B
的受影响区域集Map: A -> BF(A), S = {regions of B}
使用自定义InpufFormat,它将使用受影响的区域进行B表扫描,并扫描整个表A
Map: B U S -> (tag 'B', keyB => value)
A -> (tag 'A', keyA => value)
Reduce: reduce-join
在Reduce中进行分析。