У меня есть таблица с 4 * 10^8 (примерно) записями, и я хочу получить ее 4 * 10^6 (точно).Специальный метод выборки в реализации Map-Reduce
Но мой путь, чтобы получить образец как-то особенным:
- Я выбираю 1 запись из 4 * 10^8 записей в случайном порядке (каждая запись имеет одинаковую вероятность быть выбор).
- повторите шаг 1 4 * 10^6 раз (независимо от того, будет ли одна запись выбрана несколько раз).
Я придумать способ, чтобы решить эту проблему:
- Генерировать таблицу
A(num int)
, а там только один номер в каждой записи таблицыA
, которая является случайным целым числом от 1 до п (п является размером моей первоначальной таблицы, примерно 4 * 10^8, как упоминалось выше). - Загрузите таблицу
A
в качестве файла ресурсов на каждую карту, и если порядковый номер записи, находящейся на решении, находится в таблицеA
, выведите эту запись, в противном случае отбросьте ее.
Я думаю, что мой метод не очень хорош, потому что, если я хочу попробовать больше записей из исходной таблицы, таблица A
станет очень большой и не может быть загружена в качестве файла ресурсов.
Итак, может ли кто-нибудь предложить элегантный алгоритм?