참조

데이터 타입

스파크 SQL 과 DataFrame은 다음 데이터 타입을 지원합니다:

스파크 SQL의 모든 데이터 타입은 org.apache.spark.sql.types 패키지에 있습니다. 다음 코드를 통해 해당 데이터 타입에 접근할 수 있습니다.

import org.apache.spark.sql.types._
스파크 저장소의 "examples/src/main/scala/org/apache/spark/examples/sql/SparkSQLExample.scala"에서 전체 예제 코드를 볼 수 있습니다.
데이터 타입 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
BinaryType Array[Byte] BinaryType
BooleanType Boolean BooleanType
TimestampType java.sql.Timestamp TimestampType
DateType java.sql.Date DateType
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)
Note: fields는 StructField의 Seq 입니다. 또한, 두 필드가 같은 이름을 가질 수는 없습니다.
StructField 필드 데이터 타입의 Scala 값 유형. (예를 들어, 데이터 타입으로 IntegerType를 가지는 StructField는 Int) StructField(name, dataType, [nullable])
Note: nullable의 기본값은 true 입니다.

스파크 SQL의 모든 데이터 타입은 pyspark.sql.types 패키지에 있습니다. 다음 코드를 통해 해당 데이터 타입에 접근할 수 있습니다.

from pyspark.sql.types import *
데이터 타입 Python 값 타입 데이터 타입에 접근하거나 데이터 타입을 생성하기 위한 API
ByteType int 또는 long
주의: 런타임 시 숫자가 1바이트 부호 있는 정수로 변환됩니다. 숫자가 -128에서 127 사이인지 확인하십시오.
ByteType()
ShortType int 또는 long
주의: Note: 런타임 시 숫자가 2바이트 부호 있는 정수로 변환됩니다. 숫자가 -32768에서 32767 사이인지 확인하십시오.
ShortType()
IntegerType int 또는 long IntegerType()
LongType long
주의: 런타임 시 숫자가 8바이트 부호 있는 정수로 변환됩니다. 숫자가 9223372036854775808에서 9223372036854775807 사이인지 확인하십시오. 해당 범위의 숫자가 아니라면 데이터를 decimal.Decimal로 변환하고 DecimalType을 사용하십시오.
LongType()
FloatType float
주의: 런타임 시 숫자가 4바이트 단정도 부동 소수점수로 변환됩니다.
FloatType()
DoubleType float DoubleType()
DecimalType decimal.Decimal DecimalType()
StringType string StringType()
BinaryType bytearray BinaryType()
BooleanType bool BooleanType()
TimestampType datetime.datetime TimestampType()
DateType datetime.date DateType()
ArrayType list, tuple, 또는 array ArrayType(elementType, [containsNull])
Note: containsNull의 기본값은 True 입니다.
MapType dict MapType(keyType, valueType, [valueContainsNull])
Note: valueContainsNull의 기본값은 True 입니다.
StructType list 또는 tuple StructType(fields)
주의: fields는 StructField의 연속입니다. 또한, 두 개의 필드가 같은 이름을 가질 수 없습니다.
StructField 필드 데이터 타입의 Python 값 유형 (예를 들어, 데이터 타입으로 IntegerType를 가지는 StructField는 Int) StructField(name, dataType, [nullable])
Note: nullable의 기본값은 True 입니다.

NaN 의미 구조

표준 부동 소수점 의미와 정확히 일치하지 않는 float 또는 double 타입을 처리 할 때 not-a-number (NaN)을 다루는 방법이 있습니다. 구체적으로는 다음과 같이 처리합니다.

산술 연산

숫자 타입 (decimal제외) 연산 시 오버플로가 체크되지 않습니다. 이는 오버플로를 발생시키는 연산 시 그 결과값이 Java/Scala 프로그램에서 반환되는 연산 결과값과 같다는 것을 의미합니다. (예: 두 정수의 합이 표현할 수 있는 최댓값보다 크다면 결과값이 음수가 됩니다.)