我正在使用Cassandra作为一个数据密集型应用程序。由于操作和部署经验相对较少,我正在寻找的专门知识是能够阅读下面的示例并决定我是否忽略了更简单的解决方案,或者是所需的资源是否使这个问题昂贵或难以解决。
序贯推荐算法被设计成在某一商店中对用户的所有可能性中的最佳选择进行排序。首先,它可以根据用户的喜好轻松地在主书表中用1或0对每本书打分。因此,它可以“过滤掉”它知道用户不喜欢的东西,而1's进入得分回合。第二,它可以获取实时的用户数据,并对用户访问的商店的剩余图书进行排序。
问题是如何将第一个二进制推荐步骤应用于数据。
( a) 10,000家“书店”中的每一家都有自己的主要图书清单的库存子集。在最坏的情况下,如果所有的商店都有所有的书(只是假装),那就是一万家商店乘以一百万本书。然后,批处理操作(可能是火花)可以为用户提取单个商店的库存,并在应用程序逻辑中,对照哈希表检查每本书是否通过了第一个二进制推荐过滤器,该过滤器是从用户表中查询的。
( b)创建一个用户存储簿表(因为用户只有一两个最喜欢的商店),其中包括每本书第一轮推荐的布尔结果。这意味着100万用户X1百万册X2存储作为条目在本表中。然后,批处理作业只是直接查询推荐的书籍以便排序。
为了更简洁地提出我的问题,我担心在解决方案a中,所需的CPU资源和额外的IO会导致低性能的解决方案,而且解决方案b中的数据量可能会使这个解决方案难以解决。
发布于 2015-09-09 01:55:06
你不能把这些书按体裁或品味组重新组合,把问题降到更低的程度吗?在我看来,主要的问题是,你试图使用大量的数据,这些数据不够精确,无法提供实时的洞察力。在这种情况下,您可能应该尝试把书集中在一起。如果你做不到,那么你就只能进行完整的迭代,并且只限于列出的两个解决方案。
编辑:我忘了,但是聚集用户也是有意义的。
https://softwareengineering.stackexchange.com/questions/267709
复制相似问题