Engineering · 1 min read
Spark 資料型別:基本、巢狀,以及 struct 與 map
Spark SQL 常見資料型別:string、long、double、decimal(20,0)、binary、timestamp,以及巢狀的 array、map、struct,還有 struct 與 map 的差別。
先整理出目前實務專案裡最常碰到的幾組:
string
integer
array
struct
long
boolean
double
map
binary
float
decimal(20,0)
timestamp
date
常見型別
| 型別 | Spark SQL 名稱 | 說明 |
|---|---|---|
| string | STRING / StringType | 變長 Unicode 文字 |
| integer | INT / IntegerType | 4-byte 有號整數 |
| long | BIGINT / LongType | 8-byte 有號整數 |
| boolean | BOOLEAN / BooleanType | true / false |
| double | DOUBLE / DoubleType | 8-byte IEEE 754 雙精度浮點 |
| float | FLOAT / FloatType | 4-byte 單精度浮點 |
| decimal(20,0) | DECIMAL(20,0) | 20 位精確數字、小數 0 位(等於精確的 20 位整數),適合財務/精確數值 |
| timestamp | TIMESTAMP / TimestampType | 日期+時間,微秒精度,通常為 UTC |
| date | DATE / DateType | 只有年月日 |
| binary | BINARY / BinaryType | 變長 byte array(原始二進位) |
巢狀型別
| 型別 | Spark SQL 名稱 | 說明 |
|---|---|---|
| array | ARRAY<T> | 有序列表,所有元素同型別 T |
| map | MAP<K,V> | key-value 對;所有 key 同型別、所有 value 同型別 |
| struct | STRUCT<...> | 具命名欄位的複合紀錄,各欄位有自己的型別;各 key-value 可以有自己型別;相對 map 彈性(子集) |
參考來源
- Spark SQL Data Types — https://spark.apache.org/docs/latest/sql-ref-datatypes.html
Related: 回到跨引擎資料庫查詢總覽,或接著看 Spark 陣列函式與 collect。