2
Ich versuche spark
ml
Pipeline-Modell mit einem Filtertransformator zu verlängern, nachSpark-Datenrahmen UDF Keine TypeTag verfügbar
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))))
}
}
dieser Code nicht mit einem Fehler kompilieren haben:
No TypeTag available for IN
[error] val transformUDF = udf[Boolean, IN](this.createFilterFunc)
wie kann ich lass das funktionieren?
Ich brauche es mit etwas explizit definierten Art in erben Klasse zu arbeiten wie
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, aber dieser UnaryTransformer funktioniert gut ohne TypeTag, wie funktioniert das? – tintin
Was ist "udf"? Was macht es mit dem Typ? –