Полное руководство по Трино, часть 1
Полное руководство по Трино, часть 1

1 Знакомство с Трино

Trino[1] это поддержка использования SQL Доступ к любому источнику данных SQL Механизм запросов, который может предоставлять более гибкие и эффективные службы запросов. В этой главе будет кратко представлено Trino Основные функции и сценарии использования.

1.1 Проблемы с большими данными

В сегодняшний информационный век данные повсюду. Независимо от того, являетесь ли вы частным лицом или компанией, понимание и понимание данных являются ключом к успеху. В настоящее время существует большое разнообразие механизмов хранения данных, таких как реляционные базы данных, базы данных NoSQL, базы данных документов, хранилища «ключ-значение» и хранилище объектов, как показано на рисунке ниже. Современные информационные системы обычно требуют сочетания нескольких механизмов хранения для удовлетворения реальных потребностей использования.

Таким образом, вышеупомянутые различные системы хранения данных имеют следующие проблемы при запросе данных:

  • В разных системах используются разные языки запросов и инструменты анализа, отсутствие унифицированных стандартных инструментов (разные системы SQL Также есть различия в синтаксисе)
  • Данные из разных систем распределены по разным островам, а поддержка федеративных запросов между базами данных еще не завершена.
  • Традиционный метод создания и обслуживания больших хранилищ данных слишком дорог, а шаги слишком громоздки.

Для решения вышеперечисленных проблем и возникла компания Trino.

1.2 Возможности Трино

Trino это открытый исходный код«Механизм распределенных SQL-запросов»,можетпроходитьфедеративный запрос、Параллельный запрос、Горизонтальное кластерное масштабирование и другие методы решают вышеуказанные проблемы.

Таким образом, Trino имеет следующие три характеристики:

  1. Создан для производительности и масштабирования
  2. Все идет SQL
  3. Хранилища данных и запросы Изоляция вычислительных ресурсов

1.3 Сценарии использования Трино

Гибкие и эффективные функции Trino позволяют пользователям свободно выбирать, когда использовать Trino. Ниже приведены некоторые типичные сценарии использования Trino:

  • проходитьединый SQL Доступ к различным источникам данных
  • Выполнение федеративных запросов из нескольких источников данных
  • осуществлять SQL Конвертировать и ETL
  • Создайте виртуальное хранилище данных (семантический уровень)
  • Создание механизма запросов к озеру данных

2 Установка и настройка Trino

В этой главе кратко описано, как установить Trino, настроить источники данных и запросить данные.

2.1 На основе Docker

Trino можно установить через Docker. Сначала установите [Docker](https://www.docker.com/get-started/ «Официальный сайт Docker») локально, а затем используйте следующую команду для загрузки образа (необходимо зарегистрироваться). личный пользователь Docker):

Язык кода:javascript
копировать
$ docker pull trinodb/trino

После завершения загрузки запустите контейнер напрямую с помощью следующей команды (вы не можете получить доступ к веб-интерфейсу без привязки внешнего порта):

Язык кода:javascript
копировать
$ docker run -p 8080:8080 --name trino trinodb/trino

После успешного запуска вы можете подключиться к контейнеру и войти Trino CLI Проверьте, прошла ли установка успешно (конфигурация находится в /etc/trino Вниз):

Язык кода:javascript
копировать
$ docker exec -it trino trino 
trino> select count(*) from tpch.sf1.nation; 
 _col0 
------- 
    25 
(1 row) 
 
Query 20181105_001601_00002_e6r6y, FINISHED, 1 node
Splits: 21 total, 21 done (100.00%) 
0:06 [25 rows, 0B] [4 rows/s, 0B/s]

2.2 На основе файлов

2.2.1 Получить установочный пакет

Второй метод — установка на основе файла установочного пакета. Trino может работать в системах Linux и macOS. Требуется поддержка JVM и Python. Конкретная версия (для версии 385):

  • Java Виртуальная машина: jdk Версия 「11.0.11」 или Вот и все(Можетпроходить java --version подтверждать)
  • Python:Версия 「2.6」 или Вот и все(Можетпроходить python --version подтверждать)

На официальном сайте или Maven Загрузите последнюю или указанную версию из центральной библиотеки. tar.gz Сожмите файл пакета и распакуйте его с помощью следующей команды:

Язык кода:javascript
копировать
$ tar xvzf trino-server-*.tar.gz

Разархивированная папка содержит следующие каталоги:

  • lib: jar-пакеты и зависимости, связанные со службами.
  • Плагины: связанные плагины и зависимости
  • bin:запускать Скрипт
  • и т. д.: файлы конфигурации (созданные пользователями).
  • var: связанные журналы (создание службы)

2.2.2 Добавить файл конфигурации

Перед запуском Trino необходимо предоставить ряд файлов конфигурации, как показано ниже (эта статья основана на эталонной конфигурации, приведенной в документе Trino 385):

Свойства узла

хранится в etc/node.properties , содержит информацию о конфигурации каждого узла. Узел — это Trino Для одного экземпляра установки исходная конфигурация, на которую вы можете ссылаться, выглядит следующим образом:

Язык кода:javascript
копировать
node.environment=demo
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
  • node.environment Представляет имя среды узла (может содержать только строчные буквы и символы подчеркивания). Все узлы одного кластера должны иметь одинаковое имя среды.
  • node.id Представляет уникальный идентификатор текущего узла (может содержать только строчные буквы, символы подчеркивания и тире).
  • (Можетвыбирать)node.data-dir Вы можете выбрать расположение журнала конфигурации (обратите внимание на права доступа к папке).
Конфигурация JVM

хранится в etc/jvm.config на Яве Для параметров, связанных с запуском виртуальной машины, вы можете обратиться к следующим конфигурациям:

Язык кода:javascript
копировать
-server
-Xmx4G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.nio.maxCachedBufferSize=2000000
-Djdk.attach.allowAttachSelf=true
Свойства конфигурации

хранится в etc/config.properties в том числе Trino Основная информация о конфигурации службы. каждый Trino Сервер можно использовать как coordinator или worker для выполнения функций. Для одноузловых машин Trino Необходимо использовать одновременно, так как coordinator и Для рабочих доступны следующие конфигурации для справки:

Язык кода:javascript
копировать
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery.uri=http://localhost:8080
Уровень журнала

хранится в etc/log.properties , который является дополнительной конфигурацией и может указывать самый низкий уровень вывода определенного журнала:

Язык кода:javascript
копировать
io.trino=INFO

Записать вывод по умолчанию INFO уровне, приведенное выше утверждение будет действовать на io.trino.server и io.trino.plugin.hive Две категории.

Конфигурация источника данных

Trino проходить catalogs Определить источники данных, к которым пользователи могут получить доступ. Фактический доступ к данным осуществляется catalog настроен в Trino «Коннектор»(connector)завершить,разъемсерединараскроет весь источник данных schema(Библиотека) и table(поверхность)。

источник данныххранится в etc/catalog Оглавлениесередина,проходит xxx.properties указать конкретный каталог (соответствие имени). Например, мы можем создать файл mysql.properties настроить MySQL Разъем:

Язык кода:javascript
копировать
connector.name=mysql
connection-url=jdbc:mysql://xxx:3306?serverTimezone=UTC&useSSL=false
connection-user=root
connection-password=xxx

каждый catalog Все файлы обязательны connector.name свойства, остальные свойства зависят от конкретной реализации соединителя.

「PS」:для oracle Источник данных, возможно, должен быть в Конфигурация JVMсерединадобавить настройки часового пояса -Duser.timezone="+08:00"(против ORA-01882 ошибка).

2.2.3 Запустить Трино

После добавления конфигурации вы можете запустить скрипт в папке установки:

Язык кода:javascript
копировать
$ bin/launcher run

Если операция прошла успешно, вы увидите следующую информацию (на самом деле будет распечатано много информации...):

Язык кода:javascript
копировать
INFO        main io.trino.server.Server ======== SERVER STARTED

Вы также можете запустить следующую команду в фоновом режиме: Трино (терминал не выводит информацию):

Язык кода:javascript
копировать
$ bin/launcher start

проходить stop может остановиться Trino (просто выйдите напрямую, если он запускается на переднем плане).

3 Использование Трино

В этой главе рассказывается, как использовать Trino.

3.1 Интерфейс командной строки Trino

Trino Инструмент командной строки необходимо загружать отдельно (Docker Он будет автоматически интегрирован, если установлен), На официальном сайте или Maven Загрузка центральной библиотеки xxx-executable.jar файл и переименуйте его в 「trino」(Суффикс также следует удалить),А следующая команда позволяет изучить:

Язык кода:javascript
копировать
$ chmod +x trino

Переместите этот файл в bin папку, вы можете вызвать ее после настройки пути, MacOS Можно изменить ниже .zshrc Файл (изменить фактический путь):

Язык кода:javascript
копировать
export PATH=~/bin/:$PATH

Теперь вы можете запустить Trino CLI в терминале:

Язык кода:javascript
копировать
$ trino --version 
Trino CLI 385

Если DirectUse является локальным тестом или docker Развертывание можно начать напрямую trino CLI, иначе нужно указать адрес сервера:

Язык кода:javascript
копировать
$ trino --server https://trino.example.com:8080 
trino>

После успешного запуска вы можете напрямую написать SQL-запрос. Обратите внимание, что он должен заканчиваться точкой с запятой:

Язык кода:javascript
копировать
trino> SELECT count(*) FROM tpch.tiny.nation;
 _col0
-------
    25
(1 row)

Query 20220614_023919_00001_vdub7, FINISHED, 1 node
Splits: 13 total, 13 done (100.00%)
1.42 [25 rows, 0B] [17 rows/s, 0B/s]

「PS」:Если в сети были внесены какие-либо изменения(Например, подключитесь к нашей офисной сети.),Trino Может быть сообщено Failed communicating with server Ошибка, Докер При запуске такой проблемы нет.

3.2 Драйвер Trino JDBC

Trino ОКпроходить JDBC Ехать в любом Java Доступен в приложении, которое представляет собой Type 4 водить машину,и Trino Родной протокол осуществляет прямую связь. Ниже приводится Spring Boot В качестве примера мы покажем, как представить Trino。

первыйпроходить maven Представьте соответствующие jar пакет (обязательно Jave 8 или и выше), вы также можете скачать jar Пакеты добавляются вручную:

Язык кода:javascript
копировать
<dependency>
    <groupId>io.trino</groupId>
    <artifactId>trino-jdbc</artifactId>
    <version>385</version>
</dependency>

После установки драйвера необходимо выполнить настройку соединения Trino в файле конфигурации. Ниже приведен пример конфигурации в формате yaml:

Язык кода:javascript
копировать
spring:
  datasource:
    presto:
      name: presto
      driver-class-name: io.trino.jdbc.TrinoDriver
      jdbc-url: jdbc:trino://127.0.0.1:8080
      username: admin

в jdbc-url Вы можете указать доп. catalog и schema ограничиватьисточник данныхобъем,user-name Необходимо указать, выполняется ли аутентификация или нет.

После завершения Конфигурации необходимо вручную создать соответствующую Конфигурация источника данных (обратите внимание, что название аннотации не может повторяться):

Язык кода:javascript
копировать
@Bean(name = "prestoConfigDataSource")
@ConfigurationProperties(prefix = "spring.datasource.presto")
public DataSource getPrestoDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "prestoJdbcTemplate")
public JdbcTemplate prestoJdbcTemplate(@Qualifier("prestoConfigDataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

Когда вызывается исследование, его можно реализовать с помощью автоматической сборки:

Язык кода:javascript
копировать
@Autowired
@Qualifier("prestoJdbcTemplate")
private JdbcTemplate prestoJdbcTemplate;

// Вызовите метод запроса, чтобы получить результаты запроса (на на основеString типа sql)
List<Map<String, Object>> res = prestoJdbcTemplate.queryForList(sql);

3.3 Trino Web UI

Trino Сервер предоставляет Web UI контролировать Trino Сопутствующая информация для локального развертывания Trino,Можеткпроходить http://localhost:8080 доступ:

3.4 Обзор Trino SQL

Trino это подписка ANSI SQL Механизм запросов вводит некоторые новые характеристики, совместимые со стандартом. Следующее будет Trino середина SQL Представлены основные методы использования.

3.4.1 Концепция

Trino можетпроходить SQL Доступ к любому внешнему источнику данных в основном включает в себя следующие четыре концепции:

  • Connector:Воля Trino èИсточник данных адаптирован к коннектору, и источник данных необходимо связать с конкретным коннектором.
  • Catalog:определить доступ кисточник данныхконкретные детали,Например, он содержит schema и разъемы для использования
  • Schema:организовать table прочь. каталог и schema совместно определить, что можно запросить table собирать
  • Table:неупорядоченныйсобирать,Организовано в именованные столбцы с типами данных.,По сути, это табличный сбор данных.,Не ограничивается реляционными базами данных)

3.4.2 Случай начала работы

Во-первых, вы можете найти все источники данных с помощью следующего оператора:

Язык кода:javascript
копировать
SHOW CATALOGS; 
 Catalog 
 --------- 
 system 
 tpch 
 (2 rows)

Затем вы можете продолжить поиск всех схем в определенном источнике данных:

Язык кода:javascript
копировать
SHOW SCHEMAS FROM tpch; 
       Schema 
 ------------------ 
 information_schema 
 sf1 
 sf100 
 sf1000 
 sf10000 
 sf100000 
 sf300 
 sf3000 
 sf30000 
 tiny
(10 rows)

Сделайте еще один шаг, чтобы найти все таблицы в определенной схеме:

Язык кода:javascript
копировать
SHOW TABLES FROM tpch.sf1; 
  Table 
 --------- 
 customer 
 lineitem 
 nation 
 orders 
 part 
 partsupp 
 region 
 supplier
(8 rows)

Можеткпроходить DESCRIBE Проверять table Все рубрики середина:

Язык кода:javascript
копировать
DESCRIBE tpch.sf1.region; 
  Column   |     Type     | Extra | Comment
-----------+--------------+-------+--------- 
 regionkey | bigint       |       | 
 name      | varchar(25)  |       | 
 comment   | varchar(152) |       |
(3 rows)

Далее вы можете использовать стандартный SQL для запроса данных:

Язык кода:javascript
копировать
SELECT name FROM tpch.sf1.region; 
    name 
 ------------ 
 AFRICA 
 AMERICA 
 ASIA 
 EUROPE 
 MIDDLE EAST
(5 rows)

Trino Поддерживает множество функций и операторов, Можно найти в Официальная документация середина для просмотра.

интеллектуальная карта

Ссылки

[1]

Trino Официальный сайт: https://trino.io/

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose