적용 대상: Databricks SQL
Databricks Runtime
데이터 형식 간의 충돌을 해결하는 방법을 제어하는 규칙은 SQL 데이터 형식 규칙을 참조하세요.
지원되는 데이터 유형
Azure Databricks는 다음 데이터 형식을 지원합니다.
데이터 형식 | 설명 |
---|---|
BIGINT | 8바이트 부호 있는 정수를 나타냅니다. |
바이너리 | 바이트 시퀀스 값을 나타냅니다. |
불리언 | 부울 값을 나타냅니다. |
날짜 | 표준 시간대가 없는 연도, 월 및 일 필드의 값으로 구성된 값을 나타냅니다. |
DECIMAL(p,s) | 최대 정밀도 p 및 고정 눈금 s 가 있는 숫자를 나타냅니다. |
더블 | 8바이트 배정밀도 부동 소수점 숫자를 나타냅니다. |
플로트 | 4바이트 단정밀도 부동 소수점 숫자를 나타냅니다. |
정수 | 4바이트 부호 있는 정수를 나타냅니다. |
INTERVAL 구간 한정자 | 시간 간격(초 또는 월)을 나타냅니다. |
무효 | 형식화되지 않은 NULL을 나타냅니다. |
SMALLINT | 2바이트 부호 있는 정수를 나타냅니다. |
문자열 | 문자열 값을 나타냅니다. |
타임 스탬프 | 세션 현지 표준 시간대가 있는 연도, 월, 일, 시간, 분 및 초 필드의 값으로 구성된 값을 나타냅니다. |
TIMESTAMP_NTZ | 필드 연도, 월, 일, 시간, 분 및 초의 값으로 구성된 값을 나타냅니다. 모든 작업은 표준 시간대를 고려하지 않고 수행됩니다. |
TINYINT (1바이트 정수 데이터 타입) | 1바이트 부호 있는 정수를 나타냅니다. |
ARRAY < elementType > | 형식 elementType 가 있는 요소 시퀀스로 구성된 값을 나타냅니다. |
MAP < keyType,valueType > | 키-값 쌍 세트로 구성된 값을 나타냅니다. |
STRUCT < [필드명 : 필드 타입 [NOT NULL][COMMENT 문자열][, ...]] > | 필드 시퀀스로 설명된 구조체의 값을 나타냅니다. |
변체 | 반구조화된 데이터를 나타냅니다. |
객체 | 필드 집합에서 VARIANT 설명하는 구조체가 있는 값을 나타냅니다. |
중요합니다
Delta Lake는 형식을 VOID
지원하지 않습니다.
데이터 형식 분류
데이터 유형은 다음 클래스로 그룹화됩니다.
- 숫자 형식 은 모든 숫자 데이터 형식을 나타냅니다.
- 날짜-시간 형식은 날짜 및 시간 구성 요소를 나타냅니다.
언어 매핑
적용 대상: Databricks 런타임
스칼라
Spark SQL 데이터 형식은 org.apache.spark.sql.types
패키지에 정의됩니다. 패키지를 가져와서 액세스합니다.
import org.apache.spark.sql.types._
SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
---|---|---|---|
TINYINT (1바이트 정수 데이터 타입) | 바이트타입 | 바이트 | 바이트타입 |
SMALLINT | 쇼트타입 | 간단한 | 쇼트타입 |
정수 | 인터저타입 | 정수 | 인터저타입 |
BIGINT | 롱타입 | 길다 | 롱타입 |
플로트 | 플롯타입 | 떠다니다 | 플롯타입 |
더블 | 더블타입 | 두 배 | 더블타입 |
DECIMAL(p,s) | 데시말타입 | java.math.BigDecimal | 데시말타입 |
문자열 | 스트링타입 | 문자열 | 스트링타입 |
바이너리 | 바이너리 타입 | 바이트 배열 | 바이너리 타입 |
불리언 | 불리언 타입 | 불리언 (Boolean) | 불리언 타입 |
타임 스탬프 | 타임스탬프 유형 | java.sql.timestamp | 타임스탬프 유형 |
TIMESTAMP_NTZ | 타임스탬프NTZ유형 | java.time.LocalDateTime | 타임스탬프NTZ유형 |
날짜 | 날짜타입 | java.sql.Date | 날짜타입 |
연도-월 간격 | 연월간격유형 | java.time.Period | YearMonthIntervalType(3) |
일 시간 간격 | 주간 시간 간격 유형 | java.time.Duration | DayTimeIntervalType(3) |
배열 | 배열 유형 | scala.collection.Seq | ArrayType(elementType [, containsNull]). (2) |
지도 | 맵타입 | scala.collection.Map | MapType(keyType, valueType [, valueContainsNull]). (2) |
구조체 | 구조형 타입 | org.apache.spark.sql.Row | StructType(fields). 필드는 StructField의 Seq입니다. 4. |
구조체 필드 | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식이 있는 StructField의 경우 Int) | StructField(이름, 데이터 유형 [, nullable]). 4 | |
변체 | 변형 유형 | org.apache.spark.unsafe.type.VariantVal | 변형 유형 |
객체 | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
자바
Spark SQL 데이터 형식은 org.apache.spark.sql.types
패키지에 정의됩니다. 데이터 형식에 액세스하거나 만들려면 org.apache.spark.sql.types.DataTypes
에 제공된 팩터리 메서드를 사용합니다.
SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
---|---|---|---|
TINYINT (1바이트 정수 데이터 타입) | 바이트타입 | byte 또는 Byte | DataTypes.ByteType (데이터 유형: 바이트 타입) |
SMALLINT | 쇼트타입 | short 또는 Short | DataTypes.ShortType (데이터 타입.숏타입) |
정수 | 인터저타입 | int 또는 Integer | DataTypes.IntegerType |
BIGINT | 롱타입 | long 또는 Long | DataTypes.LongType |
플로트 | 플롯타입 | float 또는 Float | DataTypes.FloatType (데이터 유형: 부동 소수점 형식) |
더블 | 더블타입 | double 또는 Double | DataTypes.DoubleType (더블형) |
DECIMAL(p,s) | 데시말타입 | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale) (정밀도와 스케일 매개변수를 사용하여 소수 유형을 생성합니다). |
문자열 | 스트링타입 | 문자열 | DataTypes.StringType(데이터 유형.문자열 유형) |
바이너리 | 바이너리 타입 | byte[] | DataTypes.BinaryType (데이터 유형. 바이너리 유형) |
불리언 | 불리언 타입 | boolean 또는 Boolean | DataTypes.BooleanType |
타임 스탬프 | 타임스탬프 유형 | java.sql.timestamp | DataTypes.타임스탬프 타입 |
TIMESTAMP_NTZ | 타임스탬프NTZ유형 | java.time.LocalDateTime | DataTypes.TimestampNTZType (타임스탬프 NTZ 유형) |
날짜 | 날짜타입 | java.sql.Date | DataTypes.DateType (날짜형식) |
연도-월 간격 | 연월간격유형 | java.time.Period | YearMonthIntervalType(3) |
일 시간 간격 | 주간 시간 간격 유형 | java.time.Duration | DayTimeIntervalType(3) |
배열 | 배열 유형 | 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 |
구조체 필드 | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 Int) | DataTypes.createStructField(name, dataType, nullable) 4 | |
변체 | 변형 유형 | org.apache.spark.unsafe.type.VariantVal | 변형 유형 |
객체 | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
파이썬
Spark SQL 데이터 형식은 pyspark.sql.types
패키지에 정의됩니다. 패키지를 가져와서 액세스합니다.
from pyspark.sql.types import *
SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
---|---|---|---|
TINYINT (1바이트 정수 데이터 타입) | 바이트타입 | int 또는 long (1) | ByteType() |
SMALLINT | 쇼트타입 | int 또는 long (1) | ShortType() |
정수 | 인터저타입 | int 또는 long | IntegerType() |
BIGINT | 롱타입 | long(1) | LongType() |
플로트 | 플롯타입 | float(1) | FloatType() |
더블 | 더블타입 | 떠다니다 | DoubleType() |
DECIMAL(p,s) | 데시말타입 | 데시멀(decimal) | DecimalType(디시멀타입) |
문자열 | 스트링타입 | 문자열 | StringType() |
바이너리 | 바이너리 타입 | ByteArray | BinaryType() |
불리언 | 불리언 타입 | 불리언 | BooleanType() |
타임 스탬프 | 타임스탬프 유형 | datetime.datetime | TimestampType() |
TIMESTAMP_NTZ | 타임스탬프NTZ유형 | datetime.datetime | TimestampNTZType() |
날짜 | 날짜타입 | datetime.date (Python의 날짜 관련 라이브러리) | 날짜유형() |
연도-월 간격 | 연월간격유형 | 지원되지 않음 | 지원되지 않음 |
일 시간 간격 | 주간 시간 간격 유형 | datetime.timedelta | DayTimeIntervalType(3) |
배열 | 배열 유형 | list, tuple 또는 array | ArrayType(elementType, [containsNull]). (2) |
지도 | 맵타입 | 사전 | MapType(keyType, valueType, [valueContainsNull]). (2) |
구조체 | 구조형 타입 | list, tuple, 또는 array | StructType(fields). 필드는 StructField의 Seq입니다. (4) |
구조체 필드 | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 Int) | StructField(name, dataType, [nullable]). (4) | |
변체 | 변형 유형 | VariantVal | VariantType() |
객체 | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
R 프로그래밍 언어
SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
---|---|---|---|
TINYINT (1바이트 정수 데이터 타입) | 바이트타입 | integer(1) | byte |
SMALLINT | 쇼트타입 | integer(1) | 짧은 |
정수 | 인터저타입 | 정수 | 정수 |
BIGINT | 롱타입 | integer(1) | 긴 |
플로트 | 플롯타입 | numeric(1) | 플로트 |
더블 | 더블타입 | 숫자 | 두 배 |
DECIMAL(p,s) | 데시말타입 | 지원되지 않음 | 지원되지 않음 |
문자열 | 스트링타입 | 문자 | '문자열' |
바이너리 | 바이너리 타입 | 원시 | 바이너리 |
불리언 | 불리언 타입 | 논리 | bool |
타임 스탬프 | 타임스탬프 유형 | POSIXct | 타임스탬프 |
TIMESTAMP_NTZ | 타임스탬프NTZ유형 | datetime.datetime | TimestampNTZType() |
날짜 | 날짜타입 | 날짜 | 날짜 |
연도-월 간격 | 연월간격유형 | 지원되지 않음 | 지원되지 않음 |
일 시간 간격 | 주간 시간 간격 유형 | 지원되지 않음 | 지원되지 않음 |
배열 | 배열 유형 | 벡터 또는 목록 | list(type='array', elementType=elementType, containsNull=[containsNull]). (2) |
지도 | 맵타입 | 환경 | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2) |
구조체 | 구조형 타입 | 명명된 목록 | list(type='struct', fields=fields). 필드는 StructField의 Seq입니다. (4) |
구조체 필드 | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 integer) | list(name=name, type=dataType, nullable=[nullable]). (4) | |
변체 | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
객체 | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
(1) 숫자는 런타임에 도메인으로 변환됩니다. 숫자가 범위 내에 있는지 확인합니다.
(2) (선택 사항) 기본값은 TRUE
입니다.
(3) 간격 유형
YearMonthIntervalType([startField,] endField)
: 다음 필드의 연속 하위 집합으로 구성된 1년 간격을 나타냅니다.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
값을 가질 수 있는지 여부를 나타냅니다. 기본값입니다.