[英]Spark dataframe udf No TypeTag available
我正在嘗試使用過濾器變壓器擴展spark
ml
管道模型,之后
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
}
你需要明確地告訴編譯器你想要一個類型為In
的TypeTag
:
import scala.reflect.runtime.universe._
abstract class RuleFilter[In: TypeTag, T <: RuleFilter[In, T]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.