Spark数据类型系统
Spark (ScalaDoc) : https://spark.apache.org/docs/3.2.0/api/scala/org/apache/spark/sql/types/IntegerType$.html
Spark -SQL datatype : https://spark.apache.org/docs/latest/sql-ref-datatypes.html
AbstractDataType 抽象类 所有数据类型的基类
主要继承的子类是DataType.
- [abstract field] defaultSize: 数据类型的默认size
- [concrete value]simpleString 类型的字符串表示
原子数据类型 AtomicType
AtomicType 也是抽象类, 继承于DataType, 主要继承子类:
- NumericType
- DateType
- BooleanType
- String Type
- TimestampTYpe
NumericType extends AtomicType
NumericType 依旧是抽象类
由两个抽象子类:
- IntegralType 整数数值的抽象基类, 四个子类
- Byte, Short, Integer, Long
- FractionalType 分数数值的抽象基类
- FloatType, DoubleType, DecimalType
IntegralType 整数家庭
非抽象类, 继承于IntegralType
ByteType:
- InternalType = Byte
- defaultSize = 1
- simpleString = "tinyint"
ShortType
- InternalType = Short
- defaultSize = 2
- simpleString = "smallint"
IntegerType
- InternalType = Int
- defaultSize = 4
- simpleString = "int"
LongType
- InternalType = Long
- defaultSize = 8
- simpleString = "bigint"
FractionalType 分数家庭
FloatType
- InternalType = Float
- defaultSize = 4
DoubleType
- InternalType = Long
- defaultSize = 8
DecimalType
复合数据类型
ArrayType(elementType, containsNull)
数组元素类型一致.
MapType
所有Key的类型要一致,所有Value类型一致.
StructType
结构体数据类型.