Lance on Aura DDL语法说明
使用限制
Lance表不支持创建partition和bucket列。
创建Lance表
用户使用CREATE TABLE语法创建Lance表,须指定STORE AS Lance。具体语法,请参见CREATE TABLE。用户创建的Lance表元数据存储于LakeFormation中,主要包含表名、表路径、表当前版本号和表参数,Lance表实际数据文件存储于OBS桶中。
示例:
1 2 3 4 5 6 7 8 9 | CREATE TABLE lance_tbl( col1 int, col2 array<double>, col3 bytea ) TABLEPROPERTIES ( 'enable.blob.col3'='true', 'arrow.fixed-size-list.col2' = '128' ) STORE AS Lance; |
TABLEPROPERTIES支持配置的表参数:
- enable.blob.col_name:布尔值,指定col_name列为BLOB列,仅支持bytea类型列,Lance中对于BLOB的介绍请参见:Lance BLOB格式介绍 。
- arrow.fixed-size-list.col_name:整型值,范围为1~2147483647,指定col_name使用Arrow中的FixedSizeList存储为定长向量,仅支持浮点数类型的一维数组。
- max.rows.per.file:整型值,范围为1~9223372036854775807,默认值为1048576,指定单个文件写入最大行数。
- max.bytes.per.file:整型值,范围为1~9223372036854775807,默认值为90GiB,指定单个文件写入最大字节数。
- lance.encoding.compression:字符串,可指定为zstd、lz4、fsst三种压缩算法,其中zstd支持配置压缩等级,取值范围为0-22,如果未指定压缩等级则默认压缩等级为3,默认不启用压缩。三种压缩方式的介绍请参见:Lance支持压缩方式介绍。
- lance.batch.readahead:整型值,范围为1~9223372036854775807,默认值为4,指定预读的Batch数目。
- lance.fragment.readahead:整型值,范围为1~9223372036854775807,默认值为32,指定预读的Fragment数目。
- lance.storage.version:字符串,可取值为0.1、2.0、2.1、2.2,指定存储的Lance格式版本,默认值为2.2。
- lance.block.size:整型值,范围为1~34359738368,指定向存储层发起单次I/O请求的最小字节数,默认值为1MB。
- metadata.cache.size:整型值,范围为1~34359738368,指定元数据缓存大小字节数,默认值为1GiB。
- io.buffer.size:整型值,范围为1~34359738368,指定I/O缓冲区大小字节数,默认值为2GiB。
- index.cache.size:整型值,范围为1~34359738368,指定索引缓存大小字节数,默认值为6GiB。
删除Lance表
通过DROP TABLE语法删除Lance表,会同时删除表的元数据及数据(Managed表删除后可以从LakeFormation控制台恢复表的元数据及数据)。具体语法,请参见DROP TABLE。
示例:
1 | DROP TABLE lance_tbl; |
修改表中的列
- 添加列:
向一个指定表中添加一列或者多列,需要指定列名和数据类型,添加的列会追加到表的当前列后面。
ALTER TABLE tbl_name ADD COLUMN col1 typ1, col2 typ2, ....;
- 删除列:
ALTER TABLE tbl_name DROP COLUMNS (col1, col2,...);
- 重命名列:
ALTER TABLE tbl_name RENAME COLUMN old_name TO new_name;
- 更改列类型:
更改一个或多个指定列的数据类型为另一个类型,某些类型之间不能相互转换。
ALTER TABLE tbl_name ALTER COLUMN a TYPE new_type, b TYPE new_type, ...;
当前仅支持从低精度类型更新到高精度类型:
- 整数类型:从smallint更新到int或者bigint,从int更新到bigint。
- 浮点类型:从float4更新到float8。
- numeric类型:从低precision更新到高precision,不支持更新scale。
- 字符串类型:varchar或者char的长度变长。