我必须处理大量数据,并使用spark。
现在我尝试使用Vectors.sparse
生成一个大的特征向量,但是特征大小可能超过40亿,高于int的最大值,所以我想使用BigInt或Long类型来处理它。 / p>
但我读的代码和文档Vectors.sparse
仅支持int作为大小类型,为什么将它限制为int?我该如何绕过这个限制?
答案 0 :(得分:0)
为什么将它限制为int?
因为~ Integer.MAX_VALUE
是Java数组大小的硬限制。由于稀疏向量使用数组来存储索引值,因此它不能更大。
我怎样才能绕过这个限制?
除非你想重写SparseVector
实现,否则不太可能。在实践中有数十亿的功能(你怎么去那里?)意味着更严重的问题。并非所有关于向量的运算都保留稀疏性,更不用说大多数线性代数库都无法像这样处理。