数据类型

适用于:勾选“是” 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 为基数的数字

  • 二进制浮点类型使用指数和二进制表示形式来涵盖大范围的数字

语言映射

适用于:勾选“是” 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 是该类型最右侧的字段。 startFieldendField 的有效值为 0(MONTH)1(YEAR)

  • DayTimeIntervalType([startField,] endField):表示一个日期-时间间隔,该间隔由以下字段的一个连续子集组成:

    startField 是最左侧的字段,endField 是该类型最右侧的字段。 startFieldendField 的有效值为 0(DAY)1(HOUR)2(MINUTE)3(SECOND)

(4)StructType

  • StructType(fields) 表示结构由 StructField(字段)的序列、列表或数组描述的值。 不允许使用名称相同的两个字段。
  • StructField(name, dataType, nullable) 表示 StructType 中的字段。 字段的名称由 name 指示。 字段的数据类型由 dataType 指示。 nullable 指示这些字段的值是否可以具有 null 值。 这是默认值。