跳到主要内容
最后 更新

Lance

备注

Lance 支持自 Apache Doris 4.2 版本开始提供。

Lance 是面向分析和 AI 场景的列式数据格式。Doris 可以通过 Lance Catalog,或通过 s3()local() 表值函数(TVF)读取 Lance 数据集。

支持的功能

功能支持情况
Lance Catalog支持 Filesystem Catalog 和 REST Catalog
文件 TVF支持 s3()local()
Schema 推断和列裁剪支持
并行扫描 FragmentCatalog 查询和 S3 TVF 支持
谓词下推支持兼容的标量谓词
向量检索支持通过 vector_search() 使用 Lance 向量索引或执行 Flat Search
写入 Lance暂不支持
Time Travel暂不支持
Full-Text Search / Hybrid Search暂不支持

Catalog 配置、类型映射、谓词下推和向量检索的详细说明请参见 Lance Catalog

通过文件 TVF 查询 Lance 数据集

urifile_path 必须直接指向单个 Lance 数据集的根目录,不能指向 data/*.lance 等内部数据文件。

下面的示例从 S3 兼容对象存储读取 Lance 数据集:

SELECT user_id, name
FROM s3(
"uri" = "s3://my-bucket/lance/user_profiles.lance",
"s3.endpoint" = "http://127.0.0.1:9000",
"s3.access_key" = "admin",
"s3.secret_key" = "password",
"s3.region" = "us-east-1",
"use_path_style" = "true",
"format" = "lance"
)
WHERE user_id > 100;

读取本地数据集时,使用 local(),通过 file_path 指定数据集根目录,并通过 backend_id 指定目标 BE。Doris 会将 file_path 直接传给 Lance Reader,不会自动拼接 user_files_secure_path,也不会对路径执行 Glob 展开;建议使用绝对路径。

使用限制

  • Lance 当前仅支持读取,不支持创建、写入、更新或删除 Lance 表。
  • Lance 格式仅支持 s3()local(),暂不支持 HDFS、HTTP 等其他文件 TVF。
  • 一个 TVF 路径只能表示一个 Lance 数据集,且不支持 path_partition_keys
  • 查询读取数据集的当前版本,不支持通过 SQL 指定 Version 或执行 Time Travel。
  • Local TVF 的 Schema 发现和执行会分别打开数据集的最新版本,应避免在查询分析和执行期间修改数据集。

参考资料