Spark - 将稀疏向量保存到MongoDB

时间:2018-03-19 17:32:54

标签: mongodb scala apache-spark

我正在尝试使用类似spark tf / idf的函数来渲染我的数据。因此,作为输出,我得到非常长的稀疏向量向量,其中只有少数索引具有值。

我正在考虑将这些向量保存到MongoDB类似数组的对象中,将当前索引作为键。所以,例如像

这样的SparseVector
(23,[0,15],[1.0,1.0])

将转换为MongoDB对象,如下所示:

{"0": 1.0, "15": 1.0}

我怎样才能使用spark scala和mongodb连接器? 我应该实现某种UDF,但不确定哪种类型适合mongodb作为输入。

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。 这是我定义的用于将SparseVectors转换为BSON可转换Map的udf。

val makeSparseMapUdf = udf {
    (vec: SparseVector) => vec.indices
      .map((index) => (index.toString, vec.toArray(index)))
      .toMap
}