更新时间:2026-07-09 GMT+08:00
分享

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表

通过TRUNCATE TABLE语法清空表中的数据。具体语法,请参见TRUNCATE

示例:

1
TRUNCATE TABLE lance_tbl;

删除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的长度变长。

修改表参数

  • 添加或修改参数:

    仅支持max.rows.per.file、max.bytes.per.file、lance.encoding.compression三个参数。

    ALTER TABLE tbl_name SET TABLEPROPERTIES('max.rows.per.file'='1024', 'max.bytes.per.file'='2048', 'lance.encoding.compression'='zstd');
  • 移除表参数:

    仅支持max.rows.per.file、max.bytes.per.file、lance.encoding.compression三个参数。

    ALTER TABLE tbl_name UNSET TABLEPROPERTIES('max.rows.per.file', 'max.bytes.per.file', 'lance.encoding.compression');

相关文档