本小节来学习pyspark.sql中的types中的数据类型,数据类型汇总如下
1. DataType
数据类型的基类
fromInternal(obj)
转换SQL对象为Python对象
json()
jsonValue()
needConversion()
此类型是否需要在Python对象和内部SQL对象之间进行转换。
这用于避免对ArrayType / MapType / StructType进行不必要的转换。
simpleString()
toInternal()
将Python对象转换成SQL对象
类方法 typeName()
2. 数据类型
2.1 NullType
空类型。表示无的数据类型,用于无法推断的类型
2.2 StringType
字符串类型
2.3 BinaryType
二进制(字节数组)数据类型
2.4 BooleanType
布尔数据类型
2.5 DateType
日期(datetime.date)数据类型
2.6 TimestampType
时间戳(datetime.datetime)数据类型
2.7 DecimalType(precision=10, scale=0)
十进制(decimal.Decimal)数据类型,DecimalType类型的数据必须具有固定的精度(最大总位数)和小数位数(点右侧的位数)。例如,(5,2)可以支持从[-999.99到999.99]的值。
precision: 精度,最大总位数(默认值:10)
scale:标度,点右侧的位数(默认值:0)
2.8 DoubleType
双精度数据类型,表示双精度浮点数
2.9 FloatType
浮点数据类型,表示单精度浮点
2.10 ByteType
字节数据类型,即单个字节中的有符号整数
2.11 IntegerType
Int数据类型,即带符号的32位整数
2.12 LongType
长数据类型,即带符号的64位整数,可表示数据范围[-9223372036854775808,9223372036854775807],如果值超出此范围,请使用DecimalType
2.13 ShortType
短数据类型,即带符号的16位整数
2.14 ArrayType(elementType, containsNull=True)
数组数据类型
elementType: DataType数组中每个元素。
containsNull: 布尔值,数组是否可以包含空值(无)
2.15 MapType(keyType, valueType, valueContainsNull=True)
MAP类型
keyType: MapType中的键。
valueType:MapType中的值。
valueContainsNull:指示值是否可以包含空(无)值
2.16 StructField(name, dataType, nullable=True, metadata=None)
StructType类型中的一个field
name –字符串,字段名称。
dataType – DataType字段。
nullable –布尔值,该字段是否可以为null(无)。
元数据 –从字符串到简单类型的字典,可以自动转换为JSON内部
fromInternal(obj)
将内部SQL对象转换为本地Python对象。
fromJson(json)
jsonValue()
needConversion()
此类型是否需要在Python对象和内部SQL对象之间进行转换。这用于避免对ArrayType / MapType / StructType进行不必要的转换。
simpleString()
toInternal(obj)
将Python对象转换为内部SQL对象。
typeName()
2.17 StructType(fields=None)
结构类型,由StructField构成的列表组成,表示的是数据类型Row。迭代StructField就是迭代列表中的StructField,StructField可以通过名称或位置访问包含的内容。
add(field, data_type=None, nullable=True, metadata=None)
通过向其添加新元素以定义架构来构造StructType。该方法接受:
a: 一个参数,它是一个StructField对象。
b: 在2到4个参数之间,例如(名称,数据类型,可为空(可选),元数据(可选)。data_type参数可以是String或DataType对象。
入参:
field: 字段名称或StructField对象
data_type:如果存在,则为要创建的StructField的DataType
nullable:要添加的字段是否应该为空(默认为True)
metadata:任何其他元数据(默认为无)
返回值:
更新后的StructType
fieldNames()
返回列表中的所有字段名称
fromInternal()
将内部SQL对象转换为本地Python对象
fromJson(json)
类方法,
jsonValue()
needConversion()
此类型是否需要在Python对象和内部SQL对象之间进行转换。这用于避免对ArrayType / MapType / StructType进行不必要的转换
simpleString()
toInternal()
将Python对象转换成内部SQL对象
文末致敬官方文档:http://spark.apache.org/docs/2.4.4/api/python/pyspark.sql.html#module-pyspark.sql.types