【发布时间】:2013-07-21 05:04:05
【问题描述】:
问题:
我有一个巨大的特征向量表。向量中的每个元素都由两个 INTEGER 组成。这是一个例子:
-------------------------------------------------------------------------------
KEY | VALUE
---------------------------------------------------------------------------------
| f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9
---------------------------------------------------------------------------------
1 | 13 42 | | 546 43| 43 24 | 435 634 | | 45 43| 4 5 | 5 647
2 | 24 32 | 54 35 | | | 3124 32 | 454 3 | 4 5 | 12 1 |
3 | 3 1 | 54 32 | | 43 24 | | 31 2432 | 454 3 | 4 5 | 1 21
---------------------------------------------------------------------------------
假设我有大约 1200 万行具有唯一键和大约 200 列(=400 子列)。如您所见,如果该元素没有该功能,则随机列中的值可能会丢失。
我想使用一些定制的相似度函数 f(vector1, vector2) 来查询表中的第 X 行(表中不存在)以找到前 N 个(N = 10-20 可能)最佳匹配项do == 检查并返回考虑不同权重以匹配不同列的相似性分数。
问题:
就 NoSQL 数据库而言,您认为哪种实现方式最适合这一点?我想进行实时查询。我正在考虑将 HBase 与 Hadoop 一起使用(或 MongoDB 与 Hadoop,哪个更好?)并编写一个 MapReduce 作业以在每一行上执行相似度函数并获得结果。我担心 Hadoop 的批处理主力能否为我提供良好的实时性能(最多 2 秒)。我对 Lucene 没有太多经验 - 这在这里有用吗?
除此之外,有什么想法可以避免进行全表 MapReduce 扫描并以某种方式对其进行优化吗?
【问题讨论】:
标签: hadoop mapreduce hbase bigdata similarity