Я знаю, что если мы собираемся использовать рекомендательную библиотеку Mahout, независимо от того, распространяется она или нет, мы должны в первую очередь преобразовать идентификаторы String
в длинные.
Если набор данных не слишком велик, все в порядке, я могу легко использовать таблицу в памяти или IDMigrator
для сопоставления идентификатора String
с длинными идентификаторами. Однако это задание преобразования строк в длинные становится узким местом, когда размер набора данных велик.
Например, предположим, что у меня 10 миллионов пользователей, даже если я могу очень быстро выполнять предварительную обработку данных и обучение модели на EMR. Мне все еще нужно пройти через все эти пользовательские идентификаторы String на какой-то одной машине, чтобы генерировать длинные идентификаторы для этих пользователей без коллизий, это, очевидно, не невозможно, если число пользователей продолжает расти.
Даже если я сохраню это сопоставление в какой-то базе данных, назначение длинных идентификаторов для новых пользователей все равно должно быть однопоточным, чтобы избежать назначения дубликатов идентификаторов, опять же, эта задача является узким местом, которое нельзя масштабировать.
Итак, есть ли лучший подход для сопоставления идентификатора строки с длинным идентификатором?