我正在尝试使用mapGroups
执行聚合,它返回SparseMatrix作为其中一列,然后对列进行求和。如何在Spark数据集中创建一个TypedColumn并对其进行操作?
我为映射行创建了一个case class
模式以提供列名称。矩阵列输入org.apache.spark.mllib.linalg.Matrix
。如果在执行汇总(select(sum("mycolumn")
)之前未运行toDF
,则会出现一个类型不匹配错误(required: org.apache.spark.sql.TypedColumn[MySchema,?]
)。如果我包括toDF
,我会得到另一个类型不匹配错误:cannot resolve 'sum(mycolumn)' due to data type mismatch: function sum requires numeric types, not org.apache.spark.mllib.linalg.MatrixUDT
。那么,正确的做法是什么?
谢谢。请你可以建议一个解决方案的附加问题?这就是我现在卡住的地方。 – Emre
矩阵密集或稀疏吗?大小是多少? – zero323
相当小而稀疏;小到足以放在节点上。 – Emre