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";

Поддерживаемые схемы файлов:

  • csv

  • tsv

  • ssv

  • txt

  • raw

  • excel

  • json

  • avro

  • orc

  • parquet

Форматы Parquet, Avro и ORC автоматически извлекают схему из файла.


Детали форматов и примеры#

CSV / TSV / SSV#

Эти форматы разделяют строки по разделителю:

Схема

Разделитель

csv

,

tsv

\t

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‑доступ к файлам является экспериментальным.