Я думаю, что вы ищете df.dtypes с помощью схемы в качестве входных данных.
Вы можете получить это, используя пустой фрейм данных. Проверьте это
scala> import org.apache.spark.sql.types._
import org.apache.spark.sql.types._
scala> val typ = StructType(Seq(
| StructField("CreatedBy",StringType,true),
| StructField("Description",StringType,true),
| StructField("ExpirationDate",LongType,true),
| StructField("ID",StringType,true),
| StructField("Name",StringType,true),
| StructField("Package",StringType,true)));
typ: org.apache.spark.sql.types.StructType = StructType(StructField(CreatedBy,StringType,true), StructField(Description,StringType,true), StructField(ExpirationDate,LongType,true), StructField(ID,StringType,true), StructField(Name,StringType,true), StructField(Package,StringType,true))
scala> import org.apache.spark.sql.Row
import org.apache.spark.sql.Row
scala> val df = spark.createDataFrame(spark.sparkContext.emptyRDD[Row],typ)
df: org.apache.spark.sql.DataFrame = [CreatedBy: string, Description: string ... 4 more fields]
scala> df.dtypes
res8: Array[(String, String)] = Array((CreatedBy,StringType), (Description,StringType), (ExpirationDate,LongType), (ID,StringType), (Name,StringType), (Package,StringType))
scala> df.dtypes.foreach(println)
(CreatedBy,StringType)
(Description,StringType)
(ExpirationDate,LongType)
(ID,StringType)
(Name,StringType)
(Package,StringType)
scala>