Lance
Поддержка Lance доступна начиная с Apache Doris 4.2.
Lance представляет собой столбцовый формат данных, предназначенный для аналитики и задач AI. Doris может читать наборы данных Lance через Lance Catalog или с помощью табличных функций s3() и local() (TVF).
Сопоставление типов Lance см. в разделе Сопоставление типов данных Doris.
Поддерживаемые возможности
| Возможность | Поддержка |
|---|---|
| Lance Catalog | Поддерживаются Filesystem Catalog и REST Catalog |
| Файловые TVF | Поддерживаются s3() и local() |
| Автоматическое определение схемы и отсечение столбцов | Поддерживаются |
| Параллельное сканирование фрагментов | Поддерживается в запросах через Catalog и в TVF для S3 |
| Проталкивание предикатов | Поддерживаются совместимые скалярные предикаты |
| Векторный поиск | Поддерживаются векторные индексы Lance и Flat Search через vector_search() |
| Запись в Lance | Не поддерживается |
| Time Travel | Не поддерживается |
| Полнотекстовый поиск / гибридный поиск | Не поддерживаются |
Подробнее о настройке Catalog, сопоставлении типов, проталкивании предикатов и векторном поиске см. в разделе Lance Catalog.
Запрос к набору данных Lance с помощью файловой TVF
Параметр uri или file_path должен указывать непосредственно на корневой каталог одного набора данных Lance, а не на внутренний файл, например data/*.lance.
В следующем примере выполняется чтение набора данных Lance из объектного хранилища, совместимого с S3:
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, а целевой BE с помощью backend_id. Doris передаёт file_path напрямую в Lance Reader, не добавляя в начало user_files_secure_path и не раскрывая путь как шаблон Glob. Рекомендуется использовать абсолютный путь.
Ограничения
- Доступ к Lance возможен только для чтения. Создание, запись, обновление и удаление таблиц Lance не поддерживаются.
- Формат Lance поддерживают только
s3()иlocal(). Другие файловые TVF, например HDFS и HTTP, не поддерживаются. - Путь в TVF может указывать только на один набор данных Lance;
path_partition_keysне поддерживается. - Запросы читают текущую версию набора данных. С помощью SQL нельзя выбрать версию или выполнить Time Travel.
- При определении схемы локальной TVF и при её выполнении последняя версия набора данных открывается независимо. Не изменяйте набор данных во время анализа и выполнения запроса с локальной TVF.