Spark Transformers [Scala]: знание результата преобразования схемы до подачи полных данных - PullRequest
0 голосов
/ 13 июня 2019

Есть ли способ, который я мог бы использовать, если я хочу знать, как Transformer меняет схему;без предоставления данных?Например, у меня есть большой DataFrame, но я не хочу использовать его с преобразователем;Я просто хочу узнать, как происходит преобразование схемы без использования полных данных.

1 Ответ

2 голосов
/ 13 июня 2019

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))
...