recommendation-engine - 我应该如何在推荐引擎中存储数据?

标签 recommendation-engine bigdata

我正在开发一个推荐引擎。我想我无法将整个相似度矩阵保留在内存中。 我计算了 10,000 个项目的相似度,超过 4000 万个 float 。我将它们存储在一个二进制文件中,它变成了 160 MB。

哇! 问题是我可能有近 200,000 件元素。 即使我将它们分成几个组并为每个组创建相似性矩阵,那么我仍然必须在某个时候将它们加载到内存中。 但会消耗大量内存。

那么,有什么办法可以处理这些数据吗?

我应该如何存储它们并加载到内存中,同时确保我的引擎对输入做出相当快的响应?

最佳答案

您可以使用memory mapping访问您的数据。通过这种方式,您可以将磁盘上的数据视为一个大内存区域(并像访问内存一样访问它),区别在于只有您读取或写入数据的页面(临时)加载到内存中。

如果您可以对数据进行某种程度的分组,则在访问数据时只需在内存中读取较小的部分。

对于 float ,如果您可以降低分辨率并将值存储为 16 位整数,那么大小也会减半。

关于recommendation-engine - 我应该如何在推荐引擎中存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479077/

相关文章:

apache-spark - 读取配置单元表时spark抛出错误

performance - 如何理解Hive中的解释计划?

hadoop - 如何将一行与 spark 数据集中的所有其他行进行比较?

recommendation-engine - 使用 SVD 和 Movielens/Netflix 类型数据集的基本伪代码

elasticsearch - "flat"结构的重要术语聚合

sparse-matrix - 协同过滤程序 : What to do for a Pearson Score When There Isn't Enough Data

hadoop - oozie 中 Hive 操作的作业队列

bigdata - 如果 kafka 的一个副本宕机以跟上复制因子,kafka 会创建一个新的追随者吗

nlp - 使用word2vec计算用户之间的相似度

python - 如何解决 c = cov(x, y, rowvar) RuntimeWarning : Degrees of freedom <= 0 for slice error in python 3. 8?