我必须获取数据类型并进行大小写匹配并将其转换为某些所需的格式。但org.apache.spark.ml.linalg.VectorUDT
的使用情况显示VectorUDT
为private
。另外,我特别需要使用org.apache.spark.ml.linalg.VectorUDT
而不是org.apache.spark.mllib.linalg.VectorUDT
。有人可以建议如何解决这个问题吗?
答案 0 :(得分:3)
对于org.apache.spark.ml.linalg
类型,您应使用org.apache.spark.ml.linalg.SQLDataTypes
which provide singleton instances of the private UDT
types指定架构:
MatrixType
表示矩阵(org.apache.spark.ml.linalg.Matrix
)。
scala> org.apache.spark.ml.linalg.SQLDataTypes.MatrixType.getClass
res0: Class[_ <: org.apache.spark.sql.types.DataType] = class org.apache.spark.ml.linalg.MatrixUDT
VectorType
适用于矢量(org.apache.spark.ml.linalg.Vector
)。
scala> org.apache.spark.ml.linalg.SQLDataTypes.VectorType.getClass
res1: Class[_ <: org.apache.spark.sql.types.DataType] = class org.apache.spark.ml.linalg.VectorUDT