1class pyspark.sql.types.DataType
数据类型的基类。
10.1 fromInternal(obj)
将内部SQL对象转换为本机Python对象。
10.2 json()
10.3 jsonValue()
10.4 needConversion()
这种类型是否需要在Python对象和内部SQL对象之间进行转换?
这用于避免ArrayType / MapType / StructType的不必要的转换。
10.5 simpleString()
10.6 toInternal(obj)
将Python对象转换为内部SQL对象。
2.class pyspark.sql.types.NullType
Null类型:表示无数据类型,用于无法推断的类型。
3.class pyspark.sql.types.StringType
String 数据类型。
4.class pyspark.sql.types.BinaryType
二进制(字节数组)数据类型。
5.class pyspark.sql.types.BooleanType
Boolean 数据类型。
6.class pyspark.sql.types.DateType
Date (datetime.date) 数据类型。
7.class pyspark.sql.types.TimestampType
Timestamp (datetime.datetime) 数据类型。
8.class pyspark.sql.types.DecimalType(precision=10, scale=0)
Decimal (decimal.Decimal) 数据类型。
DecimalType必须具有固定的精度(最大总位数)和比例(点右边的位数)。 例如,(5,2)可以支持[-999.99至999.99]之间的值。
precision可以达到38,scale要小于或等于precision。
创建DecimalType时,默认的precision和scale是(10,0)。 当从十进制对象中推断模式时,它将是DecimalType(38,18)。
参数:● precision – 最大的总位数 (默认: 10)
● scale – 点右侧的位数 (默认: 0)
9.class pyspark.sql.types.DoubleType
Double 数据类型,表示双精度浮点数。
10.class pyspark.sql.types.FloatType
Float数据类型,表示单精度浮点数。
11.class pyspark.sql.types.ByteType
Byte 数据类型,即单个字节中的有符号整数。
12.class pyspark.sql.types.IntegerType
Int数据类型,即有符号的32位整数。
13.class pyspark.sql.types.LongType
Long数据类型,即有符号的64位整数。
如果数值超出[-9223372036854775808,9223372036854775807]的范围,请使用DecimalType。
14.class pyspark.sql.types.ShortType
Short数据类型,即有符号的16位整数。
15.class pyspark.sql.types.ArrayType(elementType, containsNull=True)
数组数据类型。
参数:● elementType – 数组中每个元素的DataType。
● containsNull – 布尔值,数组是否可以包含null(None)值。
16.class pyspark.sql.types.MapType(keyType, valueType, valueContainsNull=True)
Map数据类型。
参数:● keyType – map中key的数据类型。
● valueType – map中value的数据类型。
● valueContainsNull – 指示values是否可以包含null(无)值。
map数据类型中的键不允许为null(无)。
17.class pyspark.sql.types.StructField(name, dataType, nullable=True, metadata=None)
StructType中的一个字段。
参数:● name – 字符串,字段的名称。
● dataType – 字段的数据类型。
● nullable – boolean,该字段是否可以为null(None)。
● metadata – 从字符串到简单类型的字典,可以自动内部转到JSON
18.class pyspark.sql.types.StructType(fields=None)
结构类型,由StructField的列表组成。
这是表示一个行的数据类型。
18.1 add(field, data_type=None, nullable=True, metadata=None)
通过添加新元素来构造一个StructType来定义schema。 该方法接受:
a:一个参数是一个StructField对象。
b:介于2到4之间的参数(name,data_type,nullable(可选),metadata(可选))。data_type参数可以是String或DataType对象。
>>>from pyspark.sql.types import *
>>>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
参数:● field – 字段的名称或者StructField对象
● data_type – 如果存在,则创建StructField的DataType
● nullable – 要添加的字段是否可以是nullable (默认True)
● metadata – 任何其他元数据(默认无)
返回:一个新的更新的StructType