File коннектор#
Этот коннектор позволяет Trino читать отдельные файлы (CSV, TSV, Parquet, Avro, ORC и др.).
Примечание: Плагин пока не предназначен для продакшена.
Поддерживаемые файловые системы#
Local
HDFS
S3 / S3A
HTTP / HTTPS
Конфигурация#
Сначала создайте коннектор с именем cedrusdata_file:
connector.name=cedrusdata_file
Чтобы настроить чтение для нужной файловой системы, см. соответствующий раздел
Локальная файловая система#
Для доступа к локальным файлам установите:
cedrusdata.fs.native-local.enabled=true
cedrusdata.local.root-path=/
Вы можете изменить cedrusdata.local.root-path, чтобы ограничить доступную область файловой системы.
HDFS#
Для включения поддержки HDFS установите:
fs.hadoop.enabled=true
Дополнительные параметры соответствуют стандартной HDFS‑конфигурации.
S3#
Для включения поддержки S3/S3A установите:
fs.native-s3.enabled=true
Дополнительные параметры соответствуют стандартной S3‑конфигурации.
HTTP/HTTPS#
HTTP/HTTPS‑чтение включено по умолчанию, но является экспериментальным и не рекомендуется для продакшена.
Кэш#
Для повышения производительности можно включить кэширование файловой системы с помощью следующих свойств:
fs.cache.enabled=true
fs.cache.directories=/tmp/trino-cache
Дополнительные параметры кэша соответствуют стандарту Настройка кэша FS
Чтение файлов#
Для чтения файла используется синтаксис:
<catalog_name>.<schema>."<absolute-path>"
Где:
catalog_name → e.g. cedrusdata_file
schema → тип файла (csv, tsv, raw, parquet, avro и др.)
path → абсолютный URI (local:///, hdfs://, s3:///, https://)
Примеры:
SELECT * FROM cedrusdata_file.csv."local:///tmp/numbers-2.csv";
SELECT * FROM cedrusdata_file.parquet."s3:///bucket/path/file.parquet";
SELECT * FROM cedrusdata_file.orc."hdfs://namenode:9080/path/file.orc";
SELECT * FROM cedrusdata_file.csv."https://raw.githubusercontent.com/snowlift/trino-storage/master/src/test/resources/example-data/numbers-2.csv";
Поддерживаемые схемы файлов:
csvtsvssvtxtrawexceljsonavroorcparquet
Форматы Parquet, Avro и ORC автоматически извлекают схему из файла.
Детали форматов и примеры#
CSV / TSV / SSV#
Эти форматы разделяют строки по разделителю:
Схема |
Разделитель |
|---|---|
|
|
|
|
|
|
Имена колонок берутся из первой строки (заголовка).
Пример:
SELECT * FROM cedrusdata_file.csv."https://raw.githubusercontent.com/snowlift/trino-storage/master/src/test/resources/example-data/numbers-2.csv";
TXT#
Без парсинга
Одна колонка
valueКаждая строка становится отдельной записью
SELECT * FROM cedrusdata_file.txt."https://raw.githubusercontent.com/snowlift/trino-storage/master/src/test/resources/example-data/numbers.tsv";
RAW#
Возвращает весь файл одной строкой
Одна колонка
dataПохоже на TXT, но без разделения по строкам
SELECT * FROM cedrusdata_file.raw."https://raw.githubusercontent.com/snowlift/trino-storage/master/src/test/resources/example-data/numbers.tsv";
Excel#
Читает только первый лист:
SELECT * FROM cedrusdata_file.excel."https://raw.githubusercontent.com/snowlift/trino-storage/master/src/test/resources/example-data/sample.xlsx";
Parquet#
Схема извлекается из файла автоматически:
SELECT * FROM cedrusdata_file.parquet."s3:///bucket/data/data.parquet";
ORC#
Схема извлекается из файла автоматически:
SELECT * FROM cedrusdata_file.orc."hdfs://namenode:8020/path/file.orc";
Avro#
Схема извлекается из файла автоматически:
SELECT * FROM cedrusdata_file.avro."local:///tmp/example.avro";
Табличные функции#
Коннектор предоставляет вспомогательные функции.
Просмотр содержимого директории#
SELECT * FROM TABLE(cedrusdata_file.system.list('local:///tmp/trino-storage'));
Чтение файла напрямую#
SELECT * FROM TABLE(cedrusdata_file.system.read_file('csv', 'local:///tmp/trino-storage/test.txt'));
Примечания#
Требуются абсолютные пути/URI.
Схемы Avro/ORC/Parquet извлекаются автоматически.
HTTP‑доступ к файлам является экспериментальным.