StructType¶
StructType is a recursive DataType with fields and being a collection of fields itself.
StructType is used to define a schema.
Creating Instance¶
StructType takes the following to be created:
Seq[StructField]¶
Not only does StructType has fields but is also a collection of StructFields (Seq[StructField]).
All things Seq (Scala) apply equally here.
scala> schemaTyped.foreach(println)
StructField(a,IntegerType,true)
StructField(b,StringType,true)
SQL Representation¶
StructType uses STRUCT<...> for SQL representation (in query plans or SQL statements).
Catalog Representation¶
StructType uses struct<...> for catalog representation.
Demo¶
// Generating a schema from a case class
// Because we're all properly lazy
case class Person(id: Long, name: String)
import org.apache.spark.sql.Encoders
val schema = Encoders.product[Person].schema
scala> println(schema.toDDL)
`id` BIGINT,`name` STRING
scala> schemaTyped.simpleString
res0: String = struct<a:int,b:string>
scala> schemaTyped.catalogString
res1: String = struct<a:int,b:string>
scala> schemaTyped.sql
res2: String = STRUCT<`a`: INT, `b`: STRING>