【发布时间】:2013-11-26 13:53:24
【问题描述】:
我的问题是,我有两个数据库表,一个有大约 10 000 条记录,另一个有 5 000 000 条记录,每条记录有 56 列。现在我要做的是,将这 10 000 条记录中的每条记录与另一张表中的每条记录进行比较,然后找到 10 条最佳记录(比较列值等)。 所以我正在寻找一些想法如何在合理的时间内做到这一点,因为到目前为止这将花费我太长时间...... 例如,我一直在浏览互联网并找到了 hadoop,但是我从未使用过它,而且我不确定它是否能在我的情况下完成这项工作...... 我的机器有 2 个内核和 4GB 内存,所以它不是公牛。 感谢您在合理的时间内提供任何答案
【问题讨论】:
-
我会先将这 10,000 条记录放入内存(如果可以的话),然后遍历 500 万条记录。
-
我不清楚为什么要比较每一个;首先对它们进行排序并仅比较第一行...
-
@user2141889 我假设您正在计算每个项目与其他项目的距离的欧几里得距离。通常这些用于基于项目的协同过滤,并且它们是离线计算的。因此,如果计算时间不超过 3-4 小时,则计算速度无关紧要。
-
@user2141889 如果花费这么多时间,您应该升级您的 mysql 版本、box 并微调 mysql,以便它处理得更快。我见过 1000 万的计算,不需要几天就可以完成。
-
@user2141889 你能改写你的问题,以便我可以发布你可以寻找微调的内容。
标签: java mysql large-data