【问题标题】:Mahout - How to map String ids to long ones for large dataset?Mahout - 如何将字符串 ID 映射到大型数据集的长 ID?
【发布时间】:2015-05-13 03:14:44
【问题描述】:

我知道,如果我们要使用 Mahout 的推荐库,无论它是否分布式,我们都必须首先将 String id 转换为长 ID。

如果数据集不是太大,一切都很好,我可以轻松地使用内存表或IDMigratorString id 映射到长 id。但是,当数据集很大时,这种字符串到长的映射作业会成为瓶颈。

例如,假设我有 1000 万用户,即使我可以非常快速地在 EMR 上进行数据预处理和模型训练。我仍然必须在某台机器上遍历所有这些用户 String id,以便为这些用户生成长 id 而不会发生冲突,如果用户数不断增加,这显然不是不可行的。

即使我将此映射存储在某种数据库中,为新用户分配长 id 仍然需要单线程以避免分配重复的 id,此任务再次成为无法扩展的瓶颈。

那么有没有更好的方法来进行 String id 到 long id 的映射?

【问题讨论】:

    标签: mahout recommendation-engine mahout-recommender


    【解决方案1】:

    考虑不要在单台机器上做所有的字符串 => 长映射。我不知道您的字符串标识符的具体内容,但也许简单的哈希函数(例如来自 Hive)就可以了。如果没有,请考虑自己制作一个(例如基于 MD5)。这应该是最简单的方法。由于您可以访问 EMR,因此您可以在运行推荐程序之前映射每个 id,然后将其重新映射回原始字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      相关资源
      最近更新 更多