Transfomer
являются ленивыми (нет этапа fit
), поэтому даже если вы передадите данные, не должно быть значительной задержки.
Однако все PipelineStages
(включая Transfromers
и Estimators
) предоставляют метод transformSchema
, который можно вызывать напрямую, с StructType
в качестве аргумента. Например, если у вас есть StringIndexer
как этот
import org.apache.spark.ml.feature.StringIndexer
val indexer = new StringIndexer().setInputCol("foo").setOutputCol("foo_indexed")
и такая схема
import org.apache.spark.sql.types._
val schema = StructType(Seq(StructField("foo", StringType)))
Вы можете применить его следующим образом:
indexer.transformSchema(schema)
и получите
org.apache.spark.sql.types.StructType = StructType(StructField(foo,StringType,true), StructField(foo_indexed,DoubleType,false))