如何在Spark的Vector.sparse中使用BigInt / Long作为大小类型?

时间:2015-11-24 08:00:37

标签: scala vector apache-spark apache-spark-mllib

我必须处理大量数据,并使用spark。

现在我尝试使用Vectors.sparse生成一个大的特征向量,但是特征大小可能超过40亿,高于int的最大值,所以我想使用BigInt或Long类型来处理它。 / p>

但我读的代码和文档Vectors.sparse仅支持int作为大小类型,为什么将它限制为int?我该如何绕过这个限制?

1 个答案:

答案 0 :(得分:0)

  

为什么将它限制为int?

因为~ Integer.MAX_VALUE是Java数组大小的硬限制。由于稀疏向量使用数组来存储索引值,因此它不能更大。

  

我怎样才能绕过这个限制?

除非你想重写SparseVector实现,否则不太可能。在实践中有数十亿的功能(你怎么去那里?)意味着更严重的问题。并非所有关于向量的运算都保留稀疏性,更不用说大多数线性代数库都无法像这样处理。