我正在尝试将一组医学图像加载到spark SQL数据帧中。这里将每个图像加载到数据帧的矩阵列中。我看到spark最近添加了MatrixUDT以支持这种情况,但我找不到在数据帧中使用的示例。
任何人都可以帮助我。
非常感谢您的帮助。
由于
Karthik Vadla
答案 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]