适用于: Databricks SQL
Databricks Runtime
有关控制如何解决数据类型之间的冲突的规则,请参阅 SQL 数据类型规则。
支持的数据类型
Azure Databricks 支持以下数据类型:
数据类型 | 说明 |
---|---|
BIGINT | 表示 8 个字节的带符号整数。 |
二进制 | 表示字节序列值。 |
布尔 | 表示布尔值。 |
DATE | 表示由字段 year、month 和 day 的值构成的值,不包含时区。 |
DECIMAL(p,s) | 表示具有最大精度 p 和固定位数 s 的数字。 |
双 | 表示 8 个字节的双精度浮点数。 |
漂浮 | 表示 4 个字节的单精度浮点数。 |
INT 系列 | 表示 4 个字节的带符号整数。 |
INTERVAL intervalQualifier | 表示以秒或以月为单位的时间间隔。 |
空白 | 表示非类型化 NULL。 |
SMALLINT | 表示 2 个字节的带符号整数。 |
字符串 | 表示字符串值。 |
时间戳 | 表示由字段 year、month、day、hour、minute 和 second 的值构成的值,使用会话本地时区。 |
TIMESTAMP_NTZ | 表示由年、月、日、小时、分钟和秒字段值组成的值。 所有操作在不考虑任何时区的情况下执行。 |
TINYINT(小整数类型) | 表示 1 个字节的带符号整数。 |
ARRAY < elementType > | 表示由 elementType 类型的元素序列构成的值。 |
MAP < keyType,valueType > | 表示由一组键值对构成的值。 |
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | 表示多个值,其结构通过一系列字段来描述。 |
变体 | 表示半结构化数据。 |
对象 | 表示 VARIANT 中的值,其结构通过一系列字段来描述。 |
重要
Delta Lake 不支持 VOID
类型。
数据类型分类
数据类型分为以下几类:
- 精确数字类型表示以 10 为基数的数字:
- 整数数值
- DECIMAL
- 日期/时间类型表示日期和时间组成部分:
- DATE
- 时间戳
- TIMESTAMP_NTZ
语言映射
适用于: Databricks Runtime
Scala(编程语言)
Spark SQL 数据类型是在包 org.apache.spark.sql.types
中定义的。 可以通过导入此包来访问这些数据类型:
import org.apache.spark.sql.types._
SQL 类型 | 数据类型 | 值类型 | 用于访问或创建数据类型的 API |
---|---|---|---|
TINYINT(小整数类型) | 字节类型 | 字节(Byte) | 字节类型 |
SMALLINT | ShortType | 短 | ShortType |
INT 系列 | 整数类型 | int | 整数类型 |
BIGINT | LongType | 长整型 | LongType |
漂浮 | 浮点类型 | 漂浮 | 浮点类型 |
双 | DoubleType | 加倍 | DoubleType |
DECIMAL(p,s) | 十进制类型 | java.math.BigDecimal | 十进制类型 |
字符串 | 字符串类型 | 字符串 | 字符串类型 |
二进制 | 二进制类型 | Array[Byte] | 二进制类型 |
布尔 | BooleanType | 布尔值 | BooleanType |
时间戳 | 时间戳类型 | java.sql.Timestamp | 时间戳类型 |
TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | TimestampNTZType |
DATE | 日期类型 | java.sql.Date | 日期类型 |
年-月区间 | 年月间隔类型 | java.time.Period | 年月间隔类型 (3) |
白天时间间隔 | 日间时间间隔类型 | java.time.Duration | 日间时间间隔类型 (3) |
数组 | 数组类型 (ArrayType) | scala.collection.Seq | ArrayType(elementType [, containsNull]) (2) |
地图 | 地图类型 | scala.collection.Map | MapType(keyType, valueType [, valueContainsNull]) (2) |
结构 | 结构类型 | org.apache.spark.sql.Row | StructType(fields) 字段是 StructField 的序列。 4。 |
StructField | 此字段的数据类型的值类型(例如,数据类型为 IntegerType 的 StructField 的 Int) | StructField(name, dataType [, nullable]) 4 | |
变体 | 变体类型 | org.apache.spark.unsafe.type.VariantVal | 变体类型 |
对象 | 不支持 | 不支持 | 不支持 |
爪哇岛
Spark SQL 数据类型是在包 org.apache.spark.sql.types
中定义的。 若要访问或创建数据类型,请使用 org.apache.spark.sql.types.DataTypes
中提供的工厂方法。
SQL 类型 | 数据类型 | 值类型 | 用于访问或创建数据类型的 API |
---|---|---|---|
TINYINT(小整数类型) | 字节类型 | byte 或 Byte | DataTypes.ByteType |
SMALLINT | ShortType | short 或 Short | DataTypes.ShortType |
INT 系列 | 整数类型 | int 或 Integer | DataTypes.IntegerType(数据类型.整数类型) |
BIGINT | LongType | long 或 Long | DataTypes.LongType |
漂浮 | 浮点类型 | float 或 Float | DataTypes.FloatType(浮点型) |
双 | DoubleType | double 或 Double | DataTypes.DoubleType |
DECIMAL(p,s) | 十进制类型 | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale)。 |
字符串 | 字符串类型 | 字符串 | 数据类型.字符串类型 |
二进制 | 二进制类型 | byte[] | 数据类型.二进制类型 (DataTypes.BinaryType) |
布尔 | BooleanType | boolean 或 Boolean | DataTypes.BooleanType |
时间戳 | 时间戳类型 | java.sql.Timestamp | DataTypes.TimestampType (数据类型.时间戳类型) |
TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | DataTypes.TimestampNTZType |
DATE | 日期类型 | java.sql.Date | 数据类型.日期类型 |
年-月区间 | 年月间隔类型 | java.time.Period | 年月间隔类型 (3) |
白天时间间隔 | 日间时间间隔类型 | java.time.Duration | 日间时间间隔类型 (3) |
数组 | 数组类型 (ArrayType) | ava.util.List | DataTypes.createArrayType(elementType [, containsNull]) (2) |
地图 | 地图类型 | java.util.Map | DataTypes.createMapType(keyType, valueType [, valueContainsNull]) (2) |
结构 | 结构类型 | org.apache.spark.sql.Row | DataTypes.createStructType(fields) 字段是 StructField 的列表或数组。 4 |
StructField | 此字段的数据类型的值类型(例如,数据类型为 IntegerType 的 StructField 的 int) | DataTypes.createStructField(name, dataType, nullable) 4 | |
变体 | 变体类型 | org.apache.spark.unsafe.type.VariantVal | 变体类型 |
对象 | 不支持 | 不支持 | 不支持 |
Python语言
Spark SQL 数据类型是在包 pyspark.sql.types
中定义的。 可以通过导入此包来访问这些数据类型:
from pyspark.sql.types import *
SQL 类型 | 数据类型 | 值类型 | 用于访问或创建数据类型的 API |
---|---|---|---|
TINYINT(小整数类型) | 字节类型 | int 或 long。 (1) | ByteType() |
SMALLINT | ShortType | int 或 long。 (1) | ShortType() |
INT 系列 | 整数类型 | int 或 long | IntegerType() |
BIGINT | LongType | long (1) | LongType() |
漂浮 | 浮点类型 | float (1) | FloatType() |
双 | DoubleType | FLOAT | DoubleType() |
DECIMAL(p,s) | 十进制类型 | 十进制。十进制 | DecimalType() |
字符串 | 字符串类型 | 字符串 | StringType() |
二进制 | 二进制类型 | bytearray | BinaryType() |
布尔 | BooleanType | 布尔 | BooleanType() |
时间戳 | 时间戳类型 | datetime.datetime | TimestampType() |
TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
DATE | 日期类型 | datetime.date | 日期类型() |
年-月区间 | 年月间隔类型 | 不支持 | 不支持 |
白天时间间隔 | 日间时间间隔类型 | datetime.timedelta | 日间时间间隔类型 (3) |
数组 | 数组类型 (ArrayType) | list、tuple 或 array | ArrayType(elementType, [containsNull]) (2) |
地图 | 地图类型 | dict | MapType(keyType, valueType, [valueContainsNull]) (2) |
结构 | 结构类型 | list 或 tuple | StructType(fields) 字段是 StructField 的序列。 (4) |
StructField | 此字段的数据类型的值类型(例如,数据类型为 IntegerType 的 StructField 的 Int) | StructField(name, dataType, [nullable]) (4) | |
变体 | 变体类型 | VariantVal | 变体类型() |
对象 | 不支持 | 不支持 | 不支持 |
R
SQL 类型 | 数据类型 | 值类型 | 用于访问或创建数据类型的 API |
---|---|---|---|
TINYINT(小整数类型) | 字节类型 | integer (1) | “byte” |
SMALLINT | ShortType | integer (1) | 短 |
INT 系列 | 整数类型 | 整数 | 整数 |
BIGINT | LongType | integer (1) | 长 |
漂浮 | 浮点类型 | numeric (1) | 漂浮 |
双 | DoubleType | 数字 | 双 |
DECIMAL(p,s) | 十进制类型 | 不支持 | 不支持 |
字符串 | 字符串类型 | 字符 | 字符串 |
二进制 | 二进制类型 | 生的 | 二进制 |
布尔 | BooleanType | 逻辑 | “bool” |
时间戳 | 时间戳类型 | POSIXct | 时间戳 |
TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
DATE | 日期类型 | 日期 | 日期 |
年-月区间 | 年月间隔类型 | 不支持 | 不支持 |
白天时间间隔 | 日间时间间隔类型 | 不支持 | 不支持 |
数组 | 数组类型 (ArrayType) | vector 或 list | list(type='array', elementType=elementType, containsNull=[containsNull])。(2) |
地图 | 地图类型 | 环境 | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull])。(2) |
结构 | 结构类型 | 具名列表 | list(type='struct', fields=fields)。 字段是 StructField 的序列。 (4) |
StructField | 此字段的数据类型的值类型(例如,数据类型为 IntegerType 的 StructField 的 integer) | list(name=name, type=dataType, nullable=[nullable]) (4) | |
变体 | 不支持 | 不支持 | 不支持 |
对象 | 不支持 | 不支持 | 不支持 |
(1) 数字在运行时转换为域。 请确保数字在范围内。
(2) 可选值默认值为 。
(3) 间隔类型
YearMonthIntervalType([startField,] endField)
:表示一个年-月间隔,该间隔由以下字段的一个连续子集组成:startField
是最左侧的字段,endField
是该类型最右侧的字段。startField
和endField
的有效值为0(MONTH)
和1(YEAR)
。DayTimeIntervalType([startField,] endField)
:表示一个日期-时间间隔,该间隔由以下字段的一个连续子集组成:startField
是最左侧的字段,endField
是该类型最右侧的字段。startField
和endField
的有效值为0(DAY)
、1(HOUR)
、2(MINUTE)
和3(SECOND)
。
(4)StructType
-
StructType(fields)
表示结构由StructField
(字段)的序列、列表或数组描述的值。 不允许使用名称相同的两个字段。 -
StructField(name, dataType, nullable)
表示StructType
中的字段。 字段的名称由name
指示。 字段的数据类型由 dataType 指示。nullable
指示这些字段的值是否可以具有null
值。 这是默认值。