我正在尝试使用管道将定义的Scala函数包装到转换中
import org.apache.spark.ml.{Pipeline, UnaryTransformer}
import org.apache.spark.sql.types._
import org.apache.spark.ml.param.ParamMap
import org.apache.spark.ml.util.{MLWritable, MLWriter}
class UDFTransformer[T, U](override valuid: String,
f: T =>U, inType: DataType,outType: DataType)
我遇到错误
错误:未找到:键入DataType
我已导入所有必需的文件,但我不知道我缺少什么或为什么会收到此错误
其余代码是
extendsUnaryTransformer[T, U, UDFTransformer[T, U]] with MLWritable {
override protected defcreateTransformFunc: T =>U = f
override protected defvalidateInputType(inputType: DataType): Unit = require(inputType == inType)
override protected defoutputDataType: DataType = outType
override defwrite: MLWriter = new MLWriter {
override protected defsaveImpl(path: String): Unit = {}
}
}
UDFTransformer类包装一个函数f,该函数接受通用类型T,并产生类型U。在Spark数据集级别,它将inType类型的输入列(请参见UnaryTransformer)转换为新的输出列(同样,该字段由outType类型的UnaryTransformer定义)。该类还具有特征MLWritable的虚拟实现,它支持将转换器序列化为文件。