1class pyspark.sql.types.DataType
數(shù)據(jù)類型的基類。
10.1 fromInternal(obj)
將內(nèi)部SQL對象轉(zhuǎn)換為本機Python對象。
10.2 json()
10.3 jsonValue()
10.4 needConversion()
這種類型是否需要在Python對象和內(nèi)部SQL對象之間進行轉(zhuǎn)換?
這用于避免ArrayType / MapType / StructType的不必要的轉(zhuǎn)換。
10.5 simpleString()
10.6 toInternal(obj)
將Python對象轉(zhuǎn)換為內(nèi)部SQL對象。
2.class pyspark.sql.types.NullType
Null類型:表示無數(shù)據(jù)類型,用于無法推斷的類型。
3.class pyspark.sql.types.StringType
String 數(shù)據(jù)類型。
4.class pyspark.sql.types.BinaryType
二進制(字節(jié)數(shù)組)數(shù)據(jù)類型。
5.class pyspark.sql.types.BooleanType
Boolean 數(shù)據(jù)類型。
6.class pyspark.sql.types.DateType
Date (datetime.date) 數(shù)據(jù)類型。
7.class pyspark.sql.types.TimestampType
Timestamp (datetime.datetime) 數(shù)據(jù)類型。
8.class pyspark.sql.types.DecimalType(precision=10, scale=0)
Decimal (decimal.Decimal) 數(shù)據(jù)類型。
DecimalType必須具有固定的精度(最大總位數(shù))和比例(點右邊的位數(shù))。 例如,(5,2)可以支持[-999.99至999.99]之間的值。
precision可以達到38,scale要小于或等于precision。
創(chuàng)建DecimalType時,默認(rèn)的precision和scale是(10,0)。 當(dāng)從十進制對象中推斷模式時,它將是DecimalType(38,18)。
參數(shù):●?precision?– 最大的總位數(shù) (默認(rèn): 10)
●? scale – 點右側(cè)的位數(shù) (默認(rèn): 0)
9.class pyspark.sql.types.DoubleType
Double 數(shù)據(jù)類型,表示雙精度浮點數(shù)。
10.class pyspark.sql.types.FloatType
Float數(shù)據(jù)類型,表示單精度浮點數(shù)。
11.class pyspark.sql.types.ByteType
Byte 數(shù)據(jù)類型,即單個字節(jié)中的有符號整數(shù)。
12.class pyspark.sql.types.IntegerType
Int數(shù)據(jù)類型,即有符號的32位整數(shù)。
13.class pyspark.sql.types.LongType
Long數(shù)據(jù)類型,即有符號的64位整數(shù)。
如果數(shù)值超出[-9223372036854775808,9223372036854775807]的范圍,請使用DecimalType。
14.class pyspark.sql.types.ShortType
Short數(shù)據(jù)類型,即有符號的16位整數(shù)。
15.class pyspark.sql.types.ArrayType(elementType, containsNull=True)
數(shù)組數(shù)據(jù)類型。
參數(shù):●? elementType?– 數(shù)組中每個元素的DataType。
●?containsNull?– 布爾值,數(shù)組是否可以包含null(None)值。
16.class pyspark.sql.types.MapType(keyType, valueType, valueContainsNull=True)
Map數(shù)據(jù)類型。
參數(shù):●? keyType?– map中key的數(shù)據(jù)類型。
?●? valueType?– map中value的數(shù)據(jù)類型。
?●? valueContainsNull?– 指示values是否可以包含null(無)值。
map數(shù)據(jù)類型中的鍵不允許為null(無)。
17.class pyspark.sql.types.StructField(name, dataType, nullable=True, metadata=None)
StructType中的一個字段。
參數(shù):●?name?– 字符串,字段的名稱。
?●?dataType?– 字段的數(shù)據(jù)類型。
?●?nullable?– boolean,該字段是否可以為null(None)。
?●?metadata?– 從字符串到簡單類型的字典,可以自動內(nèi)部轉(zhuǎn)到JSON
18.class pyspark.sql.types.StructType(fields=None)
結(jié)構(gòu)類型,由StructField的列表組成。
這是表示一個行的數(shù)據(jù)類型。
18.1 add(field, data_type=None, nullable=True, metadata=None)
通過添加新元素來構(gòu)造一個StructType來定義schema。 該方法接受:
a:一個參數(shù)是一個StructField對象。
b:介于2到4之間的參數(shù)(name,data_type,nullable(可選),metadata(可選))。data_type參數(shù)可以是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
參數(shù):● ?field?– 字段的名稱或者StructField對象
? ? ? ? ● ?data_type?– 如果存在,則創(chuàng)建StructField的DataType
? ? ? ? ● ?nullable?– 要添加的字段是否可以是nullable (默認(rèn)True)
? ? ? ? ● ?metadata?– 任何其他元數(shù)據(jù)(默認(rèn)無)
返回:一個新的更新的StructType