StructType

class pyspark.sql.types.StructType(fields=None)[source]

Struct type, consisting of a list of StructField.

This is the data type representing a Row.

Iterating a StructType will iterate over its StructFields. A contained StructField can be accessed by its name or position.

>>> struct1 = StructType([StructField("f1", StringType(), True)])
>>> struct1["f1"]
StructField(f1,StringType,true)
>>> struct1[0]
StructField(f1,StringType,true)

Methods

Methods Documentation

add(field, data_type=None, nullable=True, metadata=None)[source]

Construct a StructType by adding new elements to it, to define the schema. The method accepts either:

  1. A single parameter which is a StructField object.

  2. Between 2 and 4 parameters as (name, data_type, nullable (optional), metadata(optional). The data_type parameter may be either a String or a DataType object.

>>> struct1 = StructType().add("f1", StringType(), True).add("f2", StringType(), True, None)
>>> struct2 = StructType([StructField("f1", StringType(), True), \
...     StructField("f2", StringType(), True, None)])
>>> struct1 == struct2
True
>>> struct1 = StructType().add(StructField("f1", StringType(), True))
>>> struct2 = StructType([StructField("f1", StringType(), True)])
>>> struct1 == struct2
True
>>> struct1 = StructType().add("f1", "string", True)
>>> struct2 = StructType([StructField("f1", StringType(), True)])
>>> struct1 == struct2
True
Parameters
  • field – Either the name of the field or a StructField object

  • data_type – If present, the DataType of the StructField to create

  • nullable – Whether the field to add should be nullable (default True)

  • metadata – Any additional metadata (default None)

Returns

a new updated StructType

fieldNames()[source]

Returns all field names in a list.

>>> struct = StructType([StructField("f1", StringType(), True)])
>>> struct.fieldNames()
['f1']
fromInternal(obj)[source]

Converts an internal SQL object into a native Python object.

classmethod fromJson(json)[source]
json()
jsonValue()[source]
needConversion()[source]

Does this type needs conversion between Python object and internal SQL object.

This is used to avoid the unnecessary conversion for ArrayType/MapType/StructType.

simpleString()[source]
toInternal(obj)[source]

Converts a Python object into an internal SQL object.

classmethod typeName()