我在mapreduce中编写程序。我需要为每个密钥保存一个很大的值。详细说明每个id(key),我想保存一个由大数字组成的值。我使用了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
在每次迭代中,每个值中的数字量都会增加。首先,我选择文本类型作为值,但在结果中我看到随机大小变得非常大,我无法得到答案。然后我选择BitSet
类型,但BitSet的过程非常慢。我不知道哪个数据结构,我可以使用它可以提供我的大小和处理速度。任何人都可以帮忙吗?
感谢。
答案 0 :(得分:1)
我认为您可以为每个密钥关联List
。因此,您可以使用Map
将ID与数字列表相关联:Map<Integer, List<Long>>
答案 1 :(得分:0)
在Java中,int数据类型是一个32位有符号整数。它的范围是-2,147,483,648到2,147,483,647,这在你的情况下是不够的。如果您有64位计算机,则可以使用“int”类型。
否则,您可以使用BigInteger
对我来说,适当的数据结构是:
Map<Integer, List<BigInteger>>