表管理
表格信息
名称 |
类型 |
是否必须 |
描述 |
tableName |
String |
是 |
名称,仅支持小写字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType |
String |
是 |
表格类型,枚举值:管理表(MANAGED), 外部表(EXTERNAL) |
creator |
String |
否 |
创建者 |
createTime |
String |
否 |
创建时间 |
lastModifyTime |
String |
否 |
表最近更新时间 |
description |
String |
否 |
描述信息, 长度不大于1024个字符 |
primaryKey |
List<String> |
否 |
表格主键信息,目前只支持数据湖格式为hudi,iceberg时填写,其对应iceberg中的identifyfiled |
storage |
Storage |
是 |
数据存储格式 |
columns |
List<Column> |
是 |
普通字段列表, 【可视化字段编辑】 |
partitions |
List<Partition> |
否 |
分区字段列表,【可视化字段编辑】 |
properties |
Map<String, String> |
否 |
表格属性,多条key-value组成 |
version |
Integer |
否 |
表版本号 |
owner |
String |
否 |
负责人名称 |
ownerType |
String |
否 |
负责人类型,枚举值:{USER,ROLE ,GROUP} |
authProperties |
Map<String, String> |
否 |
安全认证信息 |
安全认证信息authProperties数据结构
名称 |
类型 |
是否必须 |
描述 |
accessKey |
String |
否 |
平台访问密钥 |
secretKey |
String |
否 |
平台访问私钥 |
sessionTokenKey |
String |
否 |
平台会话级口令密钥 |
authType |
String |
否 |
认证类型(UGI,KERBEROS) |
user |
String |
是(UGI) |
用户,长度不超过128 |
passwd |
String |
是(UGI) |
密码,长度不超过128 |
host |
String |
是(KERBEROS) |
kerberos kdc host,长度不超过128 |
principal |
String |
是(KERBEROS) |
kerberos参与者 ,长度不超过128 |
keytab |
String |
是(KERBEROS) |
keytab文件BASE64编码结果 ,长度不超过1M |
表格存储属性(Storage)
管理表/外表属性说明(tableType=MANAGED/EXTERNAL)
名称 |
类型 |
是否必须 |
描述 |
format |
String |
是 |
文件格式,枚举值见存储格式类型定义 |
locationId |
String |
是 |
数据湖存储Id,指定后为table独有的location, tableType=MANAGED或tableType=EXTERNAL |
relativePath |
String |
否 |
相对路径,与locationId所指向的目录拼接为表实际存储路径,未指定是默认以表名生成 |
locationUri |
String |
否 |
表格存储路径地址 |
fieldDelimiter |
String |
是 |
分隔符,如:\t ,format=TEXTFILE时必填,否则不填 |
collectionDelimiter |
String |
否 |
集合元素分隔符,字段类型为ARRAY,MAP,STRUCT时选填,其余情况不填 |
mapKeyDelimiter |
String |
否 |
MAP数据类型中key值分隔符 |
dataLakeType |
String |
否 |
数据湖类型,目前支持iceberg,hudi,deltalake |
hudiTableType |
String |
否 |
hudi表类型 枚举值:COW、MOR,当datalakeType为hudi时此项为必填项 |
hudiQueryTableType |
String |
否 |
hudi请求表类型 枚举值:RO(读优化表),RT(实时表),OR(原表) 当datalakeType为hudi时此项为必填项 |
枚举值 |
描述 |
AVRO |
AVRO |
TEXTFILE |
文本格式 |
ORC |
ORC |
PARQUET |
PARQUET |
RCFILE |
RCFILE |
表格字段列表(Column)
名称 |
类型 |
是否必须 |
描述 |
name |
String |
是 |
名称,仅支持小写字母、数字和下划线,以字母开头,长度不大于32个字符 |
type |
String |
是 |
类型,见字段类型枚举值描述 |
nullable |
Boolean |
是 |
是否能为空,枚举值:true,false |
description |
String |
否 |
描述信息,长度不大于1024个字符 |
precision |
Integer |
否 |
精度 |
scale |
Integer |
否 |
小数位 |
complexTypeDetail |
String |
是 |
复杂数据(ARRAY,,MAP,STRUCT)类型详情 |
id |
String |
否 |
数据湖格式为iceberg时,系统默认生成,其表示字段的唯一标识符 |
字段类型枚举值
枚举值 |
描述 |
TINYINT |
微整型 |
SMALLINT |
短整型 |
INT |
整型 |
BIGINT |
长整型 |
DOUBLE |
双精度浮点数 |
FLOAT |
浮点数 |
DECIMAL |
精确数字类型 |
STRING |
字符 |
VARCHAR |
可变长度字符串 |
CHAR |
固定长度字符串 |
BOOLEAN |
布尔值 |
BYTES |
二进制数据 |
DATE |
日期,文本类型格式为:yyyy-MM-dd |
TIMESTAMP |
时间戳,文本类型格式为: yyyy-MM-dd HH:mm:ss.SSSSSSSSS |
ARRAY |
一组有序字段,ARRAY<data_type> |
MAP |
一组无序的键/值对,MAP<primitive_type, data_type> |
STRUCT |
一组命名的字段,STRUCT<col_name : data_type, ...> |
表格分区信息(Partition)
名称 |
类型 |
是否必须 |
描述 |
name |
String |
是 |
名称,仅支持小写字母、数字和下划线,以字母开头,长度不大于32个字符 |
type |
String |
是 |
类型,见分区字段类型枚举值描述 |
precision |
Integer |
否 |
精度 |
scale |
Integer |
否 |
小数位 |
description |
String |
否 |
描述信息,长度不大于1024个字符 |
function |
String |
否 |
分区函数,数据湖格式为iceberg时设置,枚举值如结构体Transform Function所示 |
functionParameter |
Integer |
否 |
分区函数选择bucket和truncated时填写 |
分区字段类型枚举值
枚举值 |
描述 |
TINYINT |
微整型 |
SMALLINT |
短整型 |
INT |
整型 |
BIGINT |
长整型 |
DOUBLE |
双精度浮点数 |
FLOAT |
浮点数 |
DECIMAL |
精确数字类型 |
STRING |
字符 |
VARCHAR |
可变长度字符串 |
CHAR |
固定长度字符串 |
BOOLEAN |
布尔值 |
BYTES |
二进制数据 |
DATE |
日期,文本类型格式为:yyyy-MM-dd |
TIMESTAMP |
时间戳,文本类型格式为: yyyy-MM-dd HH:mm:ss.SSSSSSSSS |
枚举值 |
描述 |
支持类型 |
year |
按年分区 |
DATE,TIMESTAMP |
month |
按月分区 |
DATE,TIMESTAMP |
day |
按天分区 |
DATE,TIMESTAMP |
hour |
按小时分区 |
TIMESTAMP |
bucket |
按哈希值modN存储桶分区,填写格式bucket(N,col) |
TINYINT,SMALLINT,INT,BIGINT,DECIMAL,DATE,TIMESTAMP,STRING,BYTES |
truncate |
按值截断为L分区,填写格式truncate(L,col) |
TINYINT,SMALLINT,INT,BIGINT, DECIMAL,STRING |
ListTables
接口说明
获取表信息列表
请求原型
GET /v1/database/${databaseName}/table
请求参数
字段 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名 |
pageNo |
Integer |
QueryString |
是 |
当前页数 |
pageSize |
Integer |
QueryString |
是 |
每页条数 |
tableTypes |
String |
QueryString |
否 |
表的类型,枚举值{MANAGED,EXTERNAL},多个类型筛选时以逗号分隔每种类型。 |
namePattern |
String |
QueryString |
否 |
搜索关键词 |
响应参数
名称 |
类型 |
描述 |
pageNo |
Integer |
当前页数 |
pageSize |
Integer |
每页条数 |
totalCount |
Integer |
总数 |
tables |
List<TableBaseInfo> |
表基本信息列表 |
TableBaseInfo
名称 |
类型 |
描述 |
tableName |
String |
表名称 |
creator |
String |
创建者 |
createTime |
String |
创建时间 |
description |
String |
描述信息 |
tableType |
String |
表类型 |
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
GET /v1/database/db_01/table?pageNo=1&pageSize=10 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length: 0
响应示例
HTTP/1.1 200 OK
Content-Length: xxxx
Content-Type: application/json
{
"pageNo": 1,
"pageSize": 10,
"tables": [
{
"createTime": "2024-02-01T09:13:17Z",
"creator": "root",
"description": "complex table",
"tableName": "tab1",
"tableType": "MANAGED"
},
{
"createTime": "2024-01-25T07:01:41Z",
"creator": "root",
"description": "this a external table",
"tableName": "es_tab",
"tableType": "EXTERNAL"
}
],
"totalCount": 2
}
ListTableNames
接口说明
获取表名称列表
请求原型
GET /v1/database/${databaseName}/table?name
请求参数
字段 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名 |
pageNo |
Integer |
QueryString |
是 |
当前页数 |
pageSize |
Integer |
QueryString |
是 |
每页条数 |
tableTypes |
String |
QueryString |
否 |
表的类型,枚举值{MANAGED,EXTERNAL,VIRTUAL_VIEW,MATERIALIZED_VIEW,MAPPING},多个类型筛选时以逗号分隔每种类型。 |
namePattern |
String |
QueryString |
否 |
搜索关键词 |
响应参数
名称 |
类型 |
描述 |
tableNames |
List<String> |
表的名称列表 |
pageNo |
Integer |
当前页数 |
pageSize |
Integer |
每页条数 |
totalCount |
Integer |
总数 |
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
GET /v1/database/db_01/table?name&pageNo=1&pageSize=10 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length: 0
响应示例
HTTP/1.1 200 OK
Content-Length: xxxx
Content-Type: application/json
GetTable
接口说明
获取表信息
请求原型
GET /v1/database/${databaseName}/table/${tableName}
请求参数
名称 |
类型 |
位置 |
必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名称 |
tableName |
String |
URL |
是 |
表名称 |
needAuthProperties |
Boolean |
QueryString |
否 |
是否需要返回安全认证信息, 默认false |
响应参数
参见Table对象参数说明
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
GET /v1/database/db_01/table/tb_01?needAuthProperties=true HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length:0
响应示例
HTTP/1.1 200 OK
Content-Length: xxxx
Content-Type: application/json
{
"columns": [
{
"description": "id",
"name": "id",
"nullable": false,
"type": "STRING"
},
{
"complexTypeDetail": "<string,int>",
"description": "map column",
"name": "map_column",
"nullable": false,
"type": "MAP"
}
],
"createTime": "2024-02-01T09:13:17Z",
"creator": "root",
"description": "complex table",
"lastModifyTime": "2024-02-01T09:13:17Z",
"partitions": [
{
"description": "",
"name": "par",
"type": "STRING"
}
],
"properties": {
"skip.header.line.count": "1"
},
"authProperties": {
"accessKey": "key1",
"secretKey": "key2",
"sessionTokenKey": "key3"
},
"storage": {
"collectionDelimiter": "|",
"fieldDelimiter": ",",
"format": "TEXTFILE",
"mapKeyDelimiter": ":",
"locationId": "loc1",
"relativePath": "tb_01",
"locationUri": "bos://edap/db_01/tb_01"
},
"tableName": "tb_01",
"tableType": "MANAGED",
"version": 1
}
CreateTable
接口说明
创建表
请求原型
POST /v1/database/${databaseName}/table
请求参数
字段 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名 |
tableName |
String |
Body |
是 |
表名称,支持字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType |
String |
Body |
是 |
表类型,枚举值:映射表(MAPPING) 管理表(MANAGED), 外部表(EXTERNAL), 视图(VIRTUAL_VIEW), 物化视图(MATERIALIZED_VIEW) |
storage |
Storge |
Body |
是 |
参考Stroge对象说明,不同表类型填写对应参数 |
columns |
Column |
Body |
是 |
参考Column对象说明 |
partitions |
Partition |
Body |
否 |
参考Partition对象说明 |
owner |
String |
Body |
否 |
负责人名称 |
ownerType |
String |
Body |
否 |
负责人类型,枚举值:{USER,ROLE ,GROUP} |
properties |
Map |
Body |
否 |
定义表的参数和属性的键值对 |
description |
String |
Body |
否 |
描述信息,长度不大于1024个字符 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
BadRequest |
Bad request, please check your request |
400 |
请求体规则校验错误 |
AccessDenied |
Access Denied. |
403 |
无权限 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
TableAlreadyExist |
Table already exist. |
409 |
表已存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
{
"tableName": "tab1",
"description": "this is a table",
"tableType": "MANAGED",
"partitions": [
{
"name": "c",
"type": "STRING",
"description": "c"
}
],
"storage": {
"format": "PARQUET",
"locationId": "loc",
"relativePath": "tab1"
},
"columns": [
{
"name": "a",
"type": "STRING",
"description": "a",
"nullable": false
}
],
"properties": {
"skip.header.line.count": "1"
}
}
响应示例
HTTP/1.1 204 No Content
Content-Length: 0
UpdateTable
接口说明
更新表格信息,可更新信息包括,表名,表描述信息,字段信息,分区信息,表参数, 数据存储格式
请求原型
PUT /v1/database/${databaseName}/table/${tableName}
请求参数
字段 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名 |
tableName |
String |
URL |
是 |
表名 |
tableName |
String |
Body |
是 |
表名称,支持字母、数字和下划线,当前数据库下唯一,长度不大于32个字符 |
tableType |
String |
Body |
是 |
表类型,枚举值:映射表(MAPPING) 管理表(MANAGED), 外部表(EXTERNAL), 视图(VIRTUAL_VIEW), 物化视图(MATERIALIZED_VIEW) |
storage |
Storge |
Body |
是 |
参考Stroge对象说明,不同表类型填写对应参数 |
columns |
Column |
Body |
是 |
参考Column对象说明 |
partitions |
Partition |
Body |
否 |
参考Partition对象说明 |
owner |
String |
Body |
否 |
负责人名称 |
ownerType |
String |
Body |
否 |
负责人类型,枚举值:{USER,ROLE ,GROUP} |
properties |
Map |
Body |
否 |
定义表的参数和属性的键值对 |
description |
String |
Body |
否 |
描述信息,长度不大于1024个字符 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
BadRequest |
Bad request, please check your request |
400 |
请求体规则校验错误 |
AccessDenied |
Access Denied. |
403 |
无权限 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
TableAlreadyExist |
Table already exist. |
409 |
表已存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
PUT /v1/database/db_01/table/tb_01 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length: xxx
Content-Type: application/json
{
"tableName": "tb_02",
"description": "描述信息",
"storage": {
"format": "TEXTFILE",
"fieldDelimiter": "\t",
"locationId": "lc_02",
"relativePath": "tb_02"
},
"properties": {
"transactional": "false",
"skip.header.line.count": "1"
},
"columns": [
{
"name": "a",
"type": "STRING",
"description": "a",
"nullable": false
},
{
"name": "height",
"type": "decimal",
"nullable": true,
"description": "高度",
"precision": 18,
"scale": 18
}
],
"partitions": [
{
"name": "c",
"type": "STRING",
"description": "c"
}
]
}
响应示例
HTTP/1.1 204 No Content
Content-Length: 0
DeleteTable
接口说明
删除表,MANAGED类型表格在删除时,同时清空表真实数据。
请求原型
DELETE /v1/database/${databaseName}/table/${tableName}
请求参数
字段 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
数据库名 |
tableName |
String |
URL |
是 |
表名 |
响应参数
除公共响应参数外,无特殊响应。
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
BadRequest |
Bad request, please check your request |
400 |
请求体规则校验错误 |
AccessDenied |
Access Denied. |
403 |
无权限 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
DELETE /v1/database/db_01/table/tb_01 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length: 0
响应示例
HTTP/1.1 204 No Content
Content-Length: 0
ListTableVersions
接口说明
获取表格版本信息列表
请求原型
GET /v1/database/${databaseName}/table/${tableName}?versionList
请求参数
名称 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
库名 |
tableName |
String |
URL |
是 |
表名 |
pageNo |
Integer |
QueryString |
是 |
当前页数 |
pageSize |
Integer |
QueryString |
是 |
每页条数 |
startTime |
String |
QueryString |
否 |
开始时间 |
endTime |
String |
QueryString |
否 |
结束时间 |
响应参数
名称 |
类型 |
描述 |
pageNo |
Integer |
当前页数 |
pageSize |
Integer |
每页条数 |
totalCount |
Integer |
总数 |
versions |
List<TableVersion> |
表格版本信息 |
TableVersion
名称 |
类型 |
描述 |
version |
Int |
表格版本号 |
creator |
String |
创建者 |
createTime |
String |
创建时间 |
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
BadRequest |
Bad request, please check your request |
400 |
请求体规则校验错误 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
GET /v1/database/default/table/tb?versionList&pageNo=1&pageSize=10 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length: 0
响应示例
HTTP/1.1 200 OK
Content-Length: xxxx
Content-Type: application/json
{
"pageNo": 1,
"pageSize": 10,
"totalCount": 2,
"versions": [
{
"version": 0,
"creator": "user_1",
"createTime": "2019-06-01T23:00:10Z"
},
{
"version": 1,
"creator": "user_2",
"createTime": "2020-06-01T23:00:10Z"
}
]
}
GetTableByVersion
接口说明
获取指定版本的表格信息
请求原型
GET /v1/database/${databaseName}/table/${tableName}?version
请求参数
名称 |
类型 |
位置 |
是否必须 |
描述 |
databaseName |
String |
URL |
是 |
库名 |
tableName |
String |
URL |
是 |
表名 |
version |
Integer |
QueryString |
是 |
表格版本号 |
响应参数
参见Table对象参数说明
错误码
公有云标准错误返回码
Code |
message |
HTTP状态码 |
描述 |
BadRequest |
Bad request, please check your request |
400 |
请求体规则校验错误 |
DatabaseNotFound |
Database not found. |
404 |
数据库不存在 |
TableNotFound |
Table not found. |
404 |
表不存在 |
InternalError |
We encountered an internal error. Please try again. |
500 |
服务器内不错误 |
请求示例
GET /v1/database/db_01/table/tb_01?version=2 HTTP/1.1
Host: edap.bj.baidubce.com
Content-Length:0
响应示例
HTTP/1.1 200 OK
Content-Length: xxxx
Content-Type: application/json
{
"columns": [
{
"description": "id",
"name": "id",
"nullable": false,
"type": "STRING"
},
{
"complexTypeDetail": "<string,int>",
"description": "map column",
"name": "map_column",
"nullable": false,
"type": "MAP"
}
],
"createTime": "2024-02-01T09:13:17Z",
"creator": "root",
"description": "complex table",
"lastModifyTime": "2024-02-01T09:13:17Z",
"partitions": [
{
"description": "",
"name": "par",
"nullable": false,
"type": "STRING"
}
],
"properties": {
"skip.header.line.count": "1"
},
"storage": {
"collectionDelimiter": "|",
"fieldDelimiter": ",",
"format": "TEXTFILE",
"mapKeyDelimiter": ":",
"locationId": "lc_02",
"relativePath": "tb_01",
"location": "bos://edap/db_01/tb_01"
},
"tableName": "tb_01",
"tableType": "MANAGED",
"version": 2
}