Какую структуру данных использовать в больших значениях?

Я пишу программу в Mapreduce. Мне нужно сохранить большое значение для каждого ключа. Подробно для каждого идентификатора (ключа) я хочу сохранить значение, состоящее из больших чисел. Я использовал цифры от 1 до 100000000. например:

id       value
1        1,3,9,23,56,345,.......,10000000000
2        6,8,45,321,876,.........,98760000876
.
.
.
100000000   1,2,6.83,90,126,567,.......,7632786765643

На каждой итерации количество чисел в каждом значении увеличивается. Во-первых, я выбираю Text type для value, но в результате я увидел, что размер shuffle стал очень большим, и я не смог получить ответ. Тогда я выбрал BitSet Тип, но процесс BitSet был очень медленным. Я не знаю, какую структуру данных я могу использовать, которая может предоставить мне размер и скорость процесса. Кто-нибудь может помочь? Благодарю.

2 ответа

Я думаю, что вы можете связать List для каждого ключа. Таким образом, вы можете использовать Map который связывает идентификатор с списком номеров: Map<Integer, List<Long>>

В Java тип данных int представляет собой 32-разрядное целое число со знаком. Он имеет диапазон от -2 147 483 648 до 2 147 483 647, что недостаточно в вашем случае. Если у вас 64-битный компьютер, вы можете использовать тип int.

В противном случае вы можете использовать BigInteger

для меня подходящей структурой данных является:

Map<Integer, List<BigInteger>>
Другие вопросы по тегам