Schema
該Schema文件的版本從 0 開始計數(shù),目前保留了所有版本的Schema文件。可能存在依賴舊Schema版本的舊文件,因此刪除此類文件時應(yīng)謹慎行事。
Schema 文件為 JSON 格式,其內(nèi)容包括:
- 字段:數(shù)據(jù)字段列表,數(shù)據(jù)字段包含 ID、名稱、類型,字段 ID 用于支持schema演變。
- 分區(qū)鍵:字段名稱列表,表的分區(qū)定義,不可修改。
- 主鍵:字段名稱列表,表的主鍵定義,不可修改。
舉例
"version" : 3,
"id" : 0,
"fields" : [ {
"id" : 0,
"name" : "order_id",
"type" : "BIGINT NOT NULL"
}, {
"id" : 1,
"name" : "order_name",
"type" : "STRING"
}, {
"id" : 2,
"name" : "order_user_id",
"type" : "BIGINT"
}, {
"id" : 3,
"name" : "order_shop_id",
"type" : "BIGINT"
} ],
"highestFieldId" : 3,
"partitionKeys" : [ ],
"primaryKeys" : [ "order_id" ],
"options" : {
"bucket" : "5"
},
"comment" : "",
"timeMillis" : 1720496663041
}
兼容性
對于舊版本:
- 版本 1:如果沒有設(shè)置桶鍵,則應(yīng)將“bucket”(桶)選項設(shè)置為 1 。
- 版本 1 和 2:如果不存在 file.format 鍵,則應(yīng)將 file.format -> orc 放入選項中。
數(shù)據(jù)列
DataField 表示表中的一列。
- id: 整數(shù)類型,列標(biāo)識符,自動遞增,用于表結(jié)構(gòu)演變。
- name:字符串,列名。
- type: 數(shù)據(jù)類型方面,它與 SQL 中的字符串類型非常相似。
- description: 字符串。
更新Schema
更新Schema應(yīng)當(dāng)生成一個新的Schema文件。
└── default.db
└── my_table
├── schema
├── schema-0
├── schema-1
└── schema-2
該快照中提到了一個“模式”(schema)的相關(guān)內(nèi)容。數(shù)值最大的模式文件通常就是最新的模式文件。
舊的模式文件不能直接刪除,因為可能存在引用舊模式文件的舊數(shù)據(jù)文件。在讀取表時,需要依靠它們來進行模式演變讀取操作。