pyspark.sql.types.
StructType
Struct type, consisting of a list of StructField.
StructField
This is the data type representing a Row.
Row
Iterating a StructType will iterate over its StructFields. A contained StructField can be accessed by its name or position.
Examples
>>> struct1 = StructType([StructField("f1", StringType(), True)]) >>> struct1["f1"] StructField(f1,StringType,true) >>> struct1[0] StructField(f1,StringType,true)
>>> struct1 = StructType([StructField("f1", StringType(), True)]) >>> struct2 = StructType([StructField("f1", StringType(), True)]) >>> struct1 == struct2 True >>> struct1 = StructType([StructField("f1", StringType(), True)]) >>> struct2 = StructType([StructField("f1", StringType(), True), ... StructField("f2", IntegerType(), False)]) >>> struct1 == struct2 False
Methods
add(field[, data_type, nullable, metadata])
add
Construct a StructType by adding new elements to it, to define the schema.
fieldNames()
fieldNames
Returns all field names in a list.
fromInternal(obj)
fromInternal
Converts an internal SQL object into a native Python object.
fromJson(json)
fromJson
json()
json
jsonValue()
jsonValue
needConversion()
needConversion
Does this type needs conversion between Python object and internal SQL object.
simpleString()
simpleString
toInternal(obj)
toInternal
Converts a Python object into an internal SQL object.
typeName()
typeName
Methods Documentation
Construct a StructType by adding new elements to it, to define the schema. The method accepts either:
A single parameter which is a StructField object. 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.
A single parameter which is a StructField object.
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.
Either the name of the field or a StructField object
DataType
If present, the DataType of the StructField to create
Whether the field to add should be nullable (default True)
Any additional metadata (default None)
>>> 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
>>> struct = StructType([StructField("f1", StringType(), True)]) >>> struct.fieldNames() ['f1']
This is used to avoid the unnecessary conversion for ArrayType/MapType/StructType.