데이터 타입
데이터 타입 (Data Types)
Spark SQL과 DataFrame이 지원하는 다양한 데이터 타입을 정리한 문서예요. 숫자, 문자열, 바이너리, 불리언, 날짜/시간, interval, 공간(spatial), 복합(complex) 타입까지 폭넓게 다루고 있어요. 각 타입의 범위와 특징, 그리고 Python·Scala·Java·R에서의 대응 값 타입과 생성 API까지 확인해 볼게요.
출처: 문서
본문
지원되는 데이터 타입 (Supported Data Types)
Spark SQL과 DataFrames는 다음 데이터 타입들을 지원해요:
- 숫자 타입 (Numeric types)
ByteType: 1바이트 부호 있는 정수를 나타내요. 숫자 범위는-128부터127까지예요.ShortType: 2바이트 부호 있는 정수를 나타내요. 숫자 범위는-32768부터32767까지예요.IntegerType: 4바이트 부호 있는 정수를 나타내요. 숫자 범위는-2147483648부터2147483647까지예요.LongType: 8바이트 부호 있는 정수를 나타내요. 숫자 범위는-9223372036854775808부터9223372036854775807까지예요.FloatType: 4바이트 단정밀도(single-precision) 부동소수점 숫자를 나타내요.DoubleType: 8바이트 배정밀도(double-precision) 부동소수점 숫자를 나타내요.DecimalType: 임의 정밀도(arbitrary-precision) 부호 있는 decimal 숫자를 나타내요. 내부적으로java.math.BigDecimal로 구현돼요.BigDecimal은 임의 정밀도 정수 unscaled value와 32비트 정수 scale로 구성돼요.
- 문자열 타입 (String type)
StringType: 문자(character) 문자열 값을 나타내요.VarcharType(length): 길이 제한이 있는StringType의 변형이에요. 입력 문자열이 길이 제한을 초과하면 데이터 쓰기가 실패해요. 참고: 이 타입은 테이블 스키마에서만 사용할 수 있고, 함수/연산자에서는 사용할 수 없어요.CharType(length): 고정 길이인VarcharType(length)의 변형이에요.CharType(n)타입 컬럼을 읽으면 항상 길이n의 문자열 값을 반환해요. Char 타입 컬럼 비교는 짧은 쪽을 더 긴 길이로 패딩해요.
- 바이너리 타입 (Binary type)
BinaryType: 바이트 시퀀스(byte sequence) 값을 나타내요.
- 불리언 타입 (Boolean type)
BooleanType: 불리언 값을 나타내요.
- 날짜/시간 타입 (Datetime type)
DateType: 시간대(time-zone)가 없는, year·month·day 필드로 구성된 값을 나타내요.TimeType(precision): 시간대가 없는, seconds 필드의 소수점 뒤에precision개의 십진 자릿수를 갖는 hour·minute·second 필드로 구성된 값을 나타내요. 값의 범위는 최소 precision0일 때00:00:00부터, 최대 precision6일 때23:59:59.999999까지예요.TimestampType: 로컬 시간대가 있는 타임스탬프(TIMESTAMP_LTZ)예요. 세션 로컬 시간대와 함께 year·month·day·hour·minute·second 필드로 구성된 값을 나타내요. 타임스탬프 값은 시간상의 절대 시점(absolute point in time)을 나타내요.TimestampNTZType: 시간대가 없는 타임스탬프(TIMESTAMP_NTZ)예요. year·month·day·hour·minute·second 필드로 구성된 값을 나타내요. 모든 연산은 시간대를 고려하지 않고 수행돼요.- 참고: Spark에서 TIMESTAMP는 TIMESTAMP_LTZ와 TIMESTAMP_NTZ 변형 중 하나와 연결되는 사용자 지정 별칭이에요. 사용자는
spark.sql.timestampType설정을 통해 기본 타임스탬프 타입을TIMESTAMP_LTZ(기본값) 또는TIMESTAMP_NTZ로 설정할 수 있어요.
- 참고: Spark에서 TIMESTAMP는 TIMESTAMP_LTZ와 TIMESTAMP_NTZ 변형 중 하나와 연결되는 사용자 지정 별칭이에요. 사용자는
- interval 타입 (Interval types)
-
YearMonthIntervalType(startField, endField): 다음 필드들의 연속된 부분집합으로 이루어진 year-month interval을 나타내요:- MONTH, 연 내의 월
[0..11], - YEAR, 범위
[0..178956970]의 연.
개별 interval 필드는 음수가 아니지만, interval 자체는 부호를 가질 수 있고 음수일 수 있어요.
startField는 타입의 가장 왼쪽 필드이고,endField는 가장 오른쪽 필드예요.startField와endField의 유효한 값은 0(MONTH)과 1(YEAR)이에요. 지원되는 year-month interval 타입은 다음과 같아요:Year-Month Interval Type SQL type An instance of the type YearMonthIntervalType(YEAR, YEAR)orYearMonthIntervalType(YEAR)INTERVAL YEAR INTERVAL '2021' YEARYearMonthIntervalType(YEAR, MONTH)INTERVAL YEAR TO MONTH INTERVAL '2021-07' YEAR TO MONTHYearMonthIntervalType(MONTH, MONTH)orYearMonthIntervalType(MONTH)INTERVAL MONTH INTERVAL '10' MONTH - MONTH, 연 내의 월
-
DayTimeIntervalType(startField, endField): 다음 필드들의 연속된 부분집합으로 이루어진 day-time interval을 나타내요:- SECOND, 분 내의 초 및 가능한 초의 분수
[0..59.999999], - MINUTE, 시간 내의 분
[0..59], - HOUR, 일 내의 시간
[0..23], - DAY, 범위
[0..106751991]의 일.
개별 interval 필드는 음수가 아니지만, interval 자체는 부호를 가질 수 있고 음수일 수 있어요.
startField는 타입의 가장 왼쪽 필드이고,endField는 가장 오른쪽 필드예요.startField와endField의 유효한 값은 0(DAY), 1(HOUR), 2(MINUTE), 3(SECOND)이에요. 지원되는 day-time interval 타입은 다음과 같아요:Day-Time Interval Type SQL type An instance of the type DayTimeIntervalType(DAY, DAY)orDayTimeIntervalType(DAY)INTERVAL DAY INTERVAL '100' DAYDayTimeIntervalType(DAY, HOUR)INTERVAL DAY TO HOUR INTERVAL '100 10' DAY TO HOURDayTimeIntervalType(DAY, MINUTE)INTERVAL DAY TO MINUTE INTERVAL '100 10:30' DAY TO MINUTEDayTimeIntervalType(DAY, SECOND)INTERVAL DAY TO SECOND INTERVAL '100 10:30:40.999999' DAY TO SECONDDayTimeIntervalType(HOUR, HOUR)orDayTimeIntervalType(HOUR)INTERVAL HOUR INTERVAL '123' HOURDayTimeIntervalType(HOUR, MINUTE)INTERVAL HOUR TO MINUTE INTERVAL '123:10' HOUR TO MINUTEDayTimeIntervalType(HOUR, SECOND)INTERVAL HOUR TO SECOND INTERVAL '123:10:59' HOUR TO SECONDDayTimeIntervalType(MINUTE, MINUTE)orDayTimeIntervalType(MINUTE)INTERVAL MINUTE INTERVAL '1000' MINUTEDayTimeIntervalType(MINUTE, SECOND)INTERVAL MINUTE TO SECOND INTERVAL '1000:01.001' MINUTE TO SECONDDayTimeIntervalType(SECOND, SECOND)orDayTimeIntervalType(SECOND)INTERVAL SECOND INTERVAL '1000.000001' SECOND - SECOND, 분 내의 초 및 가능한 초의 분수
-
- 공간 타입 (Spatial types)
OGC Simple Feature Access 사양에 정의된 공간 객체예요.
GeometryType: GEOMETRY 값, 즉 직교 좌표계(Cartesian coordinate system)의 공간 객체를 나타내요. 이 타입은geometry(4326)처럼 단일 SRID로 고정되거나,geometry(any)로 혼합 SRID를 허용할 수 있어요. SQL에서GEOMETRY컬럼은 항상 명시적 SRID 또는ANY로 선언되어야 해요.GeographyType: GEOGRAPHY 값, 즉 지리 좌표계(위도/경도)의 공간 객체를 나타내요. 가장자리 보간(edge interpolation)은 항상 SPHERICAL이에요. 이 타입은geography(4326)처럼 단일 지리 SRID로 고정되거나,geography(any)로 혼합 SRID를 허용할 수 있어요. SQL에서GEOGRAPHY컬럼은 항상 명시적 SRID 또는ANY로 선언되어야 해요. 더 자세한 내용과 내장 함수는 Geospatial (Geometry/Geography) types를 참고하세요.
- 복합 타입 (Complex types)
ArrayType(elementType, containsNull):elementType타입의 요소들로 이루어진 시퀀스를 값을 나타내요.containsNull은ArrayType값의 요소가null값을 가질 수 있는지 나타내는 데 사용돼요.MapType(keyType, valueType, valueContainsNull): 키-값 쌍의 집합으로 구성된 값을 나타내요. 키의 데이터 타입은keyType, 값의 데이터 타입은valueType으로 설명돼요.MapType값에서 키는null값을 가질 수 없어요.valueContainsNull은MapType값의 값이null값을 가질 수 있는지 나타내는 데 사용돼요.StructType(fields):StructField시퀀스(fields)로 설명된 구조를 가진 값을 나타내요.StructField(name, dataType, nullable):StructType의 필드를 나타내요. 필드 이름은name으로, 필드의 데이터 타입은dataType으로 나타내요.nullable은 이 필드들의 값이null값을 가질 수 있는지 나타내는 데 사용돼요.
Spark SQL의 모든 데이터 타입은 pyspark.sql.types 패키지에 있어요. 다음과 같이 접근할 수 있어요:
from pyspark.sql.types import *
| 데이터 타입 (Data type) | Python 값 타입 (Value type in Python) | 데이터 타입 접근/생성 API |
|---|---|---|
| ByteType | int 참고: 런타임에 숫자는 1바이트 부호 있는 정수로 변환돼요. 숫자가 -128~127 범위 내에 있는지 확인해 주세요. | ByteType() |
| ShortType | int 참고: 런타임에 숫자는 2바이트 부호 있는 정수로 변환돼요. 숫자가 -32768~32767 범위 내에 있는지 확인해 주세요. | ShortType() |
| IntegerType | int | IntegerType() |
| LongType | int 참고: 런타임에 숫자는 8바이트 부호 있는 정수로 변환돼요. 숫자가 -9223372036854775808~9223372036854775807 범위 내에 있는지 확인해 주세요. 그렇지 않으면 데이터를 decimal.Decimal로 변환해 DecimalType을 사용해 주세요. | LongType() |
| FloatType | float 참고: 런타임에 숫자는 4바이트 단정밀도 부동소수점으로 변환돼요. | FloatType() |
| DoubleType | float | DoubleType() |
| DecimalType | decimal.Decimal | DecimalType() |
| StringType | str | StringType() |
| CharType(length) | str | CharType(length) |
| VarcharType(length) | str | VarcharType(length) |
| BinaryType | bytes | BinaryType() |
| BooleanType | bool | BooleanType() |
| TimestampType | datetime.datetime | TimestampType() |
| TimestampNTZType | datetime.datetime | TimestampNTZType() |
| DateType | datetime.date | DateType() |
| DayTimeIntervalType | datetime.timedelta | DayTimeIntervalType() |
| GeometryType | Geometry | GeometryType(srid) 참고: srid는 필수이며 int나 문자열 "ANY"일 수 있어요. |
| GeographyType | Geography | GeographyType(srid) 참고: srid는 필수이며 int나 문자열 "ANY"일 수 있어요. |
| ArrayType | list, tuple, or array | ArrayType(elementType, [containsNull]) 참고: containsNull의 기본값은 True예요. |
| MapType | dict | MapType(keyType, valueType, [valueContainsNull]) 참고: valueContainsNull의 기본값은 True예요. |
| StructType | list or tuple | StructType(fields) 참고: fields는 StructFields의 Seq예요. 또한 같은 이름을 가진 두 필드는 허용되지 않아요. |
| StructField | 이 필드의 데이터 타입의 Python 값 타입 (예: IntegerType 데이터 타입의 StructField는 Int) | StructField(name, dataType, [nullable]) 참고: nullable의 기본값은 True예요. |
Spark SQL의 모든 데이터 타입은 org.apache.spark.sql.types 패키지에 있어요. 다음과 같이 접근할 수 있어요:
import org.apache.spark.sql.types._
전체 예제 코드는 Spark 저장소의 "examples/src/main/scala/org/apache/spark/examples/sql/SparkSQLExample.scala"에서 찾을 수 있어요.
| 데이터 타입 (Data type) | Scala 값 타입 (Value type in Scala) | 데이터 타입 접근/생성 API |
|---|---|---|
| ByteType | Byte | ByteType |
| ShortType | Short | ShortType |
| IntegerType | Int | IntegerType |
| LongType | Long | LongType |
| FloatType | Float | FloatType |
| DoubleType | Double | DoubleType |
| DecimalType | java.math.BigDecimal | DecimalType |
| StringType | String | StringType |
| CharType(length) | String | CharType(length) |
| VarcharType(length) | String | VarcharType(length) |
| BinaryType | Array[Byte] | BinaryType |
| BooleanType | Boolean | BooleanType |
| TimestampType | java.time.Instant or java.sql.Timestamp | TimestampType |
| TimestampNTZType | java.time.LocalDateTime | TimestampNTZType |
| DateType | java.time.LocalDate or java.sql.Date | DateType |
| TimeType | java.time.LocalTime | TimeType |
| YearMonthIntervalType | java.time.Period | YearMonthIntervalType |
| DayTimeIntervalType | java.time.Duration | DayTimeIntervalType |
| GeometryType | org.apache.spark.sql.types.Geometry | GeometryType(srid) |
| GeographyType | org.apache.spark.sql.types.Geography | GeographyType(srid) |
| ArrayType | scala.collection.Seq | ArrayType(elementType, [containsNull]) 참고: containsNull의 기본값은 true예요. |
| MapType | scala.collection.Map | MapType(keyType, valueType, [valueContainsNull]) 참고: valueContainsNull의 기본값은 true예요. |
| StructType | org.apache.spark.sql.Row | StructType(fields) 참고: fields는 StructFields의 Seq예요. 또한 같은 이름을 가진 두 필드는 허용되지 않아요. |
| StructField | 이 필드의 데이터 타입의 Scala 값 타입 (예: IntegerType 데이터 타입의 StructField는 Int) | StructField(name, dataType, [nullable]) 참고: nullable의 기본값은 true예요. |
Spark SQL의 모든 데이터 타입은 org.apache.spark.sql.types 패키지에 있어요. 데이터 타입에 접근하거나 생성하려면 org.apache.spark.sql.types.DataTypes에서 제공하는 팩토리 메서드를 사용해 주세요.
| 데이터 타입 (Data type) | Java 값 타입 (Value type in Java) | 데이터 타입 접근/생성 API |
|---|---|---|
| ByteType | byte or Byte | DataTypes.ByteType |
| ShortType | short or Short | DataTypes.ShortType |
| IntegerType | int or Integer | DataTypes.IntegerType |
| LongType | long or Long | DataTypes.LongType |
| FloatType | float or Float | DataTypes.FloatType |
| DoubleType | double or Double | DataTypes.DoubleType |
| DecimalType | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale). |
| StringType | String | DataTypes.StringType |
| CharType(length) | String | DataTypes.createCharType(length) |
| VarcharType(length) | String | DataTypes.createVarcharType(length) |
| BinaryType | byte[] | DataTypes.BinaryType |
| BooleanType | boolean or Boolean | DataTypes.BooleanType |
| TimestampType | java.time.Instant or java.sql.Timestamp | DataTypes.TimestampType |
| TimestampNTZType | java.time.LocalDateTime | DataTypes.TimestampNTZType |
| DateType | java.time.LocalDate or java.sql.Date | DataTypes.DateType |
| TimeType | java.time.LocalTime | DataTypes.TimeType |
| YearMonthIntervalType | java.time.Period | DataTypes.YearMonthIntervalType |
| DayTimeIntervalType | java.time.Duration | DataTypes.DayTimeIntervalType |
| GeometryType | org.apache.spark.sql.types.Geometry | DataTypes.createGeometryType(srid) |
| GeographyType | org.apache.spark.sql.types.Geography | DataTypes.createGeographyType(srid) |
| ArrayType | java.util.List | DataTypes.createArrayType(elementType) 참고: containsNull 값은 true가 돼요. DataTypes.createArrayType(elementType, containsNull). |
| MapType | java.util.Map | DataTypes.createMapType(keyType, valueType) 참고: valueContainsNull 값은 true가 돼요. DataTypes.createMapType(keyType, valueType, valueContainsNull) |
| StructType | org.apache.spark.sql.Row | DataTypes.createStructType(fields) 참고: fields는 StructFields의 List 또는 배열이에요. 또한 같은 이름을 가진 두 필드는 허용되지 않아요. |
| StructField | 이 필드의 데이터 타입의 Java 값 타입 (예: IntegerType 데이터 타입의 StructField는 int) | DataTypes.createStructField(name, dataType, nullable) |
| 데이터 타입 (Data type) | R 값 타입 (Value type in R) | 데이터 타입 접근/생성 API |
|---|---|---|
| ByteType | integer 참고: 런타임에 숫자는 1바이트 부호 있는 정수로 변환돼요. 숫자가 -128~127 범위 내에 있는지 확인해 주세요. | "byte" |
| ShortType | integer 참고: 런타임에 숫자는 2바이트 부호 있는 정수로 변환돼요. 숫자가 -32768~32767 범위 내에 있는지 확인해 주세요. | "short" |
| IntegerType | integer | "integer" |
| LongType | integer 참고: 런타임에 숫자는 8바이트 부호 있는 정수로 변환돼요. 숫자가 -9223372036854775808~9223372036854775807 범위 내에 있는지 확인해 주세요. 그렇지 않으면 데이터를 decimal.Decimal로 변환해 DecimalType을 사용해 주세요. | "long" |
| FloatType | numeric 참고: 런타임에 숫자는 4바이트 단정밀도 부동소수점으로 변환돼요. | "float" |
| DoubleType | numeric | "double" |
| DecimalType | 지원하지 않음 (Not supported) | 지원하지 않음 (Not supported) |
| StringType | character | "string" |
| BinaryType | raw | "binary" |
| BooleanType | logical | "bool" |
| TimestampType | POSIXct | "timestamp" |
| DateType | Date | "date" |
| GeometryType | 지원하지 않음 (Not supported) | 지원하지 않음 (Not supported) |
| GeographyType | 지원하지 않음 (Not supported) | 지원하지 않음 (Not supported) |
| ArrayType | vector or list | list(type="array", elementType=elementType, containsNull=[containsNull]) 참고: containsNull의 기본값은 TRUE예요. |
| MapType | environment | list(type="map", keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]) 참고: valueContainsNull의 기본값은 TRUE예요. |
| StructType | named list | list(type="struct", fields=fields) 참고: fields는 StructFields의 Seq예요. 또한 같은 이름을 가진 두 필드는 허용되지 않아요. |
| StructField | 이 필드의 데이터 타입의 R 값 타입 (예: IntegerType 데이터 타입의 StructField는 integer) | list(name=name, type=dataType, nullable=[nullable]) 참고: nullable의 기본값은 TRUE예요. |
다음 표는 Spark SQL 파서에서 각 데이터 타입에 사용되는 타입 이름과 별칭을 보여줘요.
| 데이터 타입 (Data type) | SQL 이름 (SQL name) |
|---|---|
| BooleanType | BOOLEAN |
| ByteType | BYTE, TINYINT |
| ShortType | SHORT, SMALLINT |
| IntegerType | INT, INTEGER |
| LongType | LONG, BIGINT |
| FloatType | FLOAT, REAL |
| DoubleType | DOUBLE |
| DateType | DATE |
| TimestampType | TIMESTAMP, TIMESTAMP_LTZ |
| TimestampNTZType | TIMESTAMP_NTZ |
| StringType | STRING |
| CharType(length) | CHAR(length) |
| VarcharType(length) | VARCHAR(length) |
| BinaryType | BINARY |
| DecimalType | DECIMAL, DEC, NUMERIC |
| YearMonthIntervalType | INTERVAL YEAR, INTERVAL YEAR TO MONTH, INTERVAL MONTH |
| DayTimeIntervalType | INTERVAL DAY, INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE, INTERVAL MINUTE TO SECOND, INTERVAL SECOND |
| GeometryType | GEOMETRY(srid) or GEOMETRY(ANY) |
| GeographyType | GEOGRAPHY(srid) or GEOGRAPHY(ANY) |
| ArrayType | ARRAY<element_type> |
| StructType | STRUCT<field1_name: field1_type, field2_name: field2_type, …> 참고: ':'는 선택 사항이에요. |
| MapType | MAP<key_type, value_type> |
부동소수점 특수 값 (Floating Point Special Values)
Spark SQL은 대소문자를 구분하지 않는 방식으로 몇 가지 특수 부동소수점 값을 지원해요:
- Inf/+Inf/Infinity/+Infinity: 양의 무한대(positive infinity)
FloatType: ScalaFloat.PositiveInfinity와 동일해요.DoubleType: ScalaDouble.PositiveInfinity와 동일해요.
- -Inf/-Infinity: 음의 무한대(negative infinity)
FloatType: ScalaFloat.NegativeInfinity와 동일해요.DoubleType: ScalaDouble.NegativeInfinity와 동일해요.
- NaN: 숫자가 아님(not a number)
FloatType: ScalaFloat.NaN과 동일해요.DoubleType: ScalaDouble.NaN과 동일해요.
양/음 무한대 의미 (Positive/Negative Infinity Semantics)
양의 무한대와 음의 무한대에는 특별한 처리가 있어요. 그 의미는 다음과 같아요:
- 양의 무한대에 양수 값을 곱하면 양의 무한대를 반환해요.
- 음의 무한대에 양수 값을 곱하면 음의 무한대를 반환해요.
- 양의 무한대에 음수 값을 곱하면 음의 무한대를 반환해요.
- 음의 무한대에 음수 값을 곱하면 양의 무한대를 반환해요.
- 양/음의 무한대에 0을 곱하면 NaN을 반환해요.
- 양/음의 무한대는 자기 자신과 같아요.
- 집계에서 모든 양의 무한대 값은 함께 그룹화돼요. 마찬가지로 모든 음의 무한대 값도 함께 그룹화돼요.
- 양의 무한대와 음의 무한대는 조인 키에서 일반 값으로 취급돼요.
- 양의 무한대는 NaN보다 낮게, 다른 어떤 값보다 높게 정렬돼요.
- 음의 무한대는 다른 어떤 값보다 낮게 정렬돼요.
NaN 의미 (NaN Semantics)
표준 부동소수점 의미와 정확히 일치하지 않는 float 또는 double 타입을 다룰 때 숫자가 아님(NaN)에 대한 특별한 처리가 있어요. 구체적으로:
- NaN = NaN은 true를 반환해요.
- 집계에서 모든 NaN 값은 함께 그룹화돼요.
- NaN은 조인 키에서 일반 값으로 취급돼요.
- NaN 값은 오름차순일 때 다른 어떤 숫자 값보다 크게, 마지막에 가요.
예제 (Examples)
SELECT double('infinity') AS col;
+--------+
| col|
+--------+
|Infinity|
+--------+
SELECT float('-inf') AS col;
+---------+
| col|
+---------+
|-Infinity|
+---------+
SELECT float('NaN') AS col;
+---+
|col|
+---+
|NaN|
+---+
SELECT double('infinity') * 0 AS col;
+---+
|col|
+---+
|NaN|
+---+
SELECT double('-infinity') * (-1234567) AS col;
+--------+
| col|
+--------+
|Infinity|
+--------+
SELECT double('infinity') < double('NaN') AS col;
+----+
| col|
+----+
|true|
+----+
SELECT double('NaN') = double('NaN') AS col;
+----+
| col|
+----+
|true|
+----+
SELECT double('inf') = double('infinity') AS col;
+----+
| col|
+----+
|true|
+----+
CREATE TABLE test (c1 int, c2 double);
INSERT INTO test VALUES
(1, double('infinity')),
(2, double('infinity')),
(3, double('inf')),
(4, double('-inf')),
(5, double('NaN')),
(6, double('NaN')),
(7, double('-infinity'))
;
SELECT COUNT(*), c2
FROM test
GROUP BY c2
ORDER BY c2;
+---------+---------+
| count(1)| c2|
+---------+---------+
| 2|-Infinity|
| 3| Infinity|
| 2| NaN|
+---------+---------+
더 알아보기 (Learn more)
- 아파치 스파크 SQL 참조 (원문)
- ANSI Compliance — ANSI 모드와 타입 변환 규칙
- Geospatial (Geometry/Geography) types — 공간 타입 상세
- Datetime Pattern — 날짜/시간 패턴