本文档主要介绍存储类型与 SparkSQL 实例类型映射,以及 SequoiaDB 存储引擎向 SparkSQL 实例类型转换的兼容性。
存储引擎类型 | SparkSQL 实例类型 | SQL 实例类型 |
---|---|---|
int32 | IntegerType | int |
int64 | LongType | bigint |
double | DoubleType | double |
decimal | DecimalType | decimal |
string | StringType | string |
ObjectId | StringType | string |
boolean | BooleanType | boolean |
date | DateType | date |
timestamp | TimestampType | timestamp |
binary | BinaryType | binary |
null | NullType | null |
BSON(嵌套对象) | StructType | struct<field:type,…> |
array | ArrayType | array<type> |
Y 表示兼容,N 表示不兼容
ByteType | ShortType | IntegerType | LongType | FloatType | DoubleType | DecimalType | BooleanType |
---|---|---|---|---|---|---|---|
int32 | Y | Y | Y | Y | N | N | Y |
int64 | Y | Y | Y | Y | N | N | Y |
double | Y | N | N | Y | N | N | Y |
decimal | Y | Y | Y | Y | N | N | Y |
string | Y | Y | Y | Y | N | N | Y |
ObjectId | Y | N | N | Y | N | N | Y |
boolean | Y | N | N | Y | N | N | Y |
date | Y | Y | Y | Y | N | N | Y |
timestamp | Y | Y | Y | Y | N | N | Y |
binary | Y | N | N | Y | N | N | Y |
null | Y | Y | Y | Y | Y | Y | Y |
BSON | Y | N | N | N | N | Y | Y |
array | Y | N | N | N | Y | N | Y |
Note:
- 不支持 SparkSQL 的 CalendarIntervalType 类型;
- null 转换为任意类型仍为 null;
- 不兼容类型转换时变为目标类型的零值;
- date 和 timestamp 与数值类型转换时取其毫秒值;
- string 如果是数值的字符串类型,则可转为对应的数值时,否则转换为 null;
- boolean 值转为数值类型时,true 为 1,false 为 0;
- 数值类型之间转换可能会溢出或损失精度。