文章目录
- 1 pyspark.sql.types.DataType
- 2 pyspark.sql.types.NullType
- 3 pyspark.sql.types.StringType
- 4 pyspark.sql.types.BinaryType
- 5 pyspark.sql.types.BooleanType
- 6 pyspark.sql.types.DateType
- 7 pyspark.sql.types.TimestampType
- 8 pyspark.sql.types.DecimalType
- 9 pyspark.sql.types.DoubleType
- 10 pyspark.sql.types.FloatType
- 11 pyspark.sql.types.ByteType
- 12 pyspark.sql.types.IntegerType
- 13 pyspark.sql.types.LongType
- 14 pyspark.sql.types.ShortType
- 15 pyspark.sql.types.ArrayType
- 16 pyspark.sql.types.MapType
- 17 pyspark.sql.types.StructField
- 18 pyspark.sql.types.StructType
1 pyspark.sql.types.DataType
class pyspark.sql.types.DataType
数据类型的基类。
1.1 fromInternal(obj)
将内部SQL对象转换为本机Python对象。
1.2 json()
1.3 jsonValue()
1.4 needConversion()
这种类型是否需要在Python对象和内部SQL对象之间进行转换?
这用于避免ArrayType / MapType / StructType的不必要的转换。
1.5 simpleString()
1.6 toInternal(obj)
将Python对象转换为内部SQL对象。
2 pyspark.sql.types.NullType
class pyspark.sql.types.NullType
Null类型
表示无的数据类型,用于无法推断的类型。
3 pyspark.sql.types.StringType
class pyspark.sql.types.StringType
String 数据类型。
4 pyspark.sql.types.BinaryType
class pyspark.sql.types.BinaryType
二进制(字节数组)数据类型。
5 pyspark.sql.types.BooleanType
class pyspark.sql.types.BooleanType
Boolean 数据类型。
6 pyspark.sql.types.DateType
class pyspark.sql.types.DateType
Date (datetime.date) 数据类型。
7 pyspark.sql.types.TimestampType
class pyspark.sql.types.TimestampType
Timestamp (datetime.datetime) 数据类型。
8 pyspark.sql.types.DecimalType
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 pyspark.sql.types.DoubleType
class pyspark.sql.types.DoubleType
Double 数据类型,表示双精度浮点数。
10 pyspark.sql.types.FloatType
class pyspark.sql.types.FloatType
Float数据类型,表示单精度浮点数。
11 pyspark.sql.types.ByteType
class pyspark.sql.types.ByteType
Byte 数据类型,即单个字节中的有符号整数。
12 pyspark.sql.types.IntegerType
class pyspark.sql.types.IntegerType
Int数据类型,即有符号的32位整数。
13 pyspark.sql.types.LongType
class pyspark.sql.types.LongType
Long数据类型,即有符号的64位整数。
如果数值超出[-9223372036854775808,9223372036854775807]的范围,请使用DecimalType。
14 pyspark.sql.types.ShortType
class pyspark.sql.types.ShortType
Short数据类型,即有符号的16位整数。
15 pyspark.sql.types.ArrayType
class pyspark.sql.types.ArrayType(elementType, containsNull=True)
数组数据类型。
参数:
- elementType – 数组中每个元素的DataType
- containsNull – 布尔值,数组是否可以包含null(None)值
16 pyspark.sql.types.MapType
class pyspark.sql.types.MapType(keyType, valueType, valueContainsNull=True)
Map数据类型。
参数:
- keyType – map中key的数据类型
- valueType – map中value的数据类型
- valueContainsNull – 指示values是否可以包含null(无)值
map数据类型中的键不允许为null(无)。
17 pyspark.sql.types.StructField
class pyspark.sql.types.StructField(name, dataType, nullable=True, metadata=None)
StructType中的一个字段。
参数:
- name – 字符串,字段的名称。
- dataType – 字段的数据类型。
- nullable – boolean,该字段是否可以为null(None)。
- metadata – 从字符串到简单类型的字典,可以自动内部转到JSON
18 pyspark.sql.types.StructType
class pyspark.sql.types.ArrayType(elementType, containsNull=True)
结构类型,由StructField的列表组成。
这是表示一个行的数据类型。
18.1 add
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