使用MatrixUDT作为SparkSQL Dataframe中的列

时间:2016-08-08 17:57:55

标签: apache-spark apache-spark-mllib apache-spark-ml

我正在尝试将一组医学图像加载到spark SQL数据帧中。这里将每个图像加载到数据帧的矩阵列中。我看到spark最近添加了MatrixUDT以支持这种情况,但我找不到在数据帧中使用的示例。

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/linalg/MatrixUDT.scala

任何人都可以帮助我。

非常感谢您的帮助。

由于

Karthik Vadla

1 个答案:

答案 0 :(得分:0)

实际上MatrixUDT自1.4以来一直是o.a.s.mllib.linalg的一部分,并且最近才被复制到o.a.s.ml.linalg。由于它从未公开过,因此您甚至无法声明正确的架构,因此我非常怀疑它是否适用于一般应用程序。更不用说API可以说在实践中有用了。

然而,基本转换工作得很好,所以你需要的只是一个RDD或Seq产品类型(再一次无法定义模式),你很高兴:

import org.apache.spark.ml.linalg.Matrices


Seq((1, Matrices.dense(2, 2, Array(1, 2, 3, 4)))).toDF
// org.apache.spark.sql.DataFrame = [_1: int, _2: matrix]

Seq((1, Matrices.dense(2, 2, Array(1, 2, 3, 4)))).toDS
// org.apache.spark.sql.Dataset[(Int, org.apache.spark.ml.linalg.Matrix)]
//   = [_1: int, _2: matrix]