2
我試圖延長spark
ml
帶有過濾器變壓器管道模型TypeTag,後星火據幀UDF無
abstract class RuleFilter[IN, T <: RuleFilter[IN, T]]
extends RuleTransformer with HasInputCol {
// def filterFuntion: String
/** @group setParam */
def setInputCol(value: String): T = set(inputCol, value).asInstanceOf[T]
protected def createFilterFunc: IN => Boolean
override def transform(df: DataFrame): DataFrame = {
transformSchema(df.schema, logging = true)
val transformUDF = udf[Boolean, IN](this.createFilterFunc)
df.filter(transformUDF(df($(inputCol))))
}
}
這段代碼沒有一個錯誤編譯:
No TypeTag available for IN
[error] val transformUDF = udf[Boolean, IN](this.createFilterFunc)
我該怎麼辦讓這個工作?
我需要它在繼承類中的一些明確的定義類型的工作,如
class PriceFilter extends RuleFilter {
def createFilterFunc(val: Double) = val > 500
}
的https: //github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/Transformer.scala#L82,但是這個UnaryTransformer工作正常,沒有明確的TypeTag,這是如何工作的? – tintin
什麼是udf?它對這種類型有什麼作用? –