我正在尝试使用类似spark tf / idf的函数来渲染我的数据。因此,作为输出,我得到非常长的稀疏向量向量,其中只有少数索引具有值。
我正在考虑将这些向量保存到MongoDB类似数组的对象中,将当前索引作为键。所以,例如像
这样的SparseVector(23,[0,15],[1.0,1.0])
将转换为MongoDB对象,如下所示:
{"0": 1.0, "15": 1.0}
我怎样才能使用spark scala和mongodb连接器? 我应该实现某种UDF,但不确定哪种类型适合mongodb作为输入。
答案 0 :(得分:1)
好的,我找到了解决方案。 这是我定义的用于将SparseVectors转换为BSON可转换Map的udf。
val makeSparseMapUdf = udf {
(vec: SparseVector) => vec.indices
.map((index) => (index.toString, vec.toArray(index)))
.toMap
}