Trino[1] это поддержка использования SQL Доступ к любому источнику данных SQL Механизм запросов, который может предоставлять более гибкие и эффективные службы запросов. В этой главе будет кратко представлено Trino Основные функции и сценарии использования.
В сегодняшний информационный век данные повсюду. Независимо от того, являетесь ли вы частным лицом или компанией, понимание и понимание данных являются ключом к успеху. В настоящее время существует большое разнообразие механизмов хранения данных, таких как реляционные базы данных, базы данных NoSQL, базы данных документов, хранилища «ключ-значение» и хранилище объектов, как показано на рисунке ниже. Современные информационные системы обычно требуют сочетания нескольких механизмов хранения для удовлетворения реальных потребностей использования.
Таким образом, вышеупомянутые различные системы хранения данных имеют следующие проблемы при запросе данных:
Для решения вышеперечисленных проблем и возникла компания Trino.
Trino это открытый исходный код«Механизм распределенных SQL-запросов»,можетпроходитьфедеративный запрос、Параллельный запрос、Горизонтальное кластерное масштабирование и другие методы решают вышеуказанные проблемы.
Таким образом, Trino имеет следующие три характеристики:
Гибкие и эффективные функции Trino позволяют пользователям свободно выбирать, когда использовать Trino. Ниже приведены некоторые типичные сценарии использования Trino:
В этой главе кратко описано, как установить Trino, настроить источники данных и запросить данные.
Trino можно установить через Docker. Сначала установите [Docker](https://www.docker.com/get-started/ «Официальный сайт Docker») локально, а затем используйте следующую команду для загрузки образа (необходимо зарегистрироваться). личный пользователь Docker):
$ docker pull trinodb/trino
После завершения загрузки запустите контейнер напрямую с помощью следующей команды (вы не можете получить доступ к веб-интерфейсу без привязки внешнего порта):
$ docker run -p 8080:8080 --name trino trinodb/trino
После успешного запуска вы можете подключиться к контейнеру и войти Trino CLI Проверьте, прошла ли установка успешно (конфигурация находится в /etc/trino Вниз):
$ 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]
Второй метод — установка на основе файла установочного пакета. Trino может работать в системах Linux и macOS. Требуется поддержка JVM и Python. Конкретная версия (для версии 385):
java --version
подтверждать)python --version
подтверждать)На официальном сайте или Maven Загрузите последнюю или указанную версию из центральной библиотеки. tar.gz Сожмите файл пакета и распакуйте его с помощью следующей команды:
$ tar xvzf trino-server-*.tar.gz
Разархивированная папка содержит следующие каталоги:
Перед запуском Trino необходимо предоставить ряд файлов конфигурации, как показано ниже (эта статья основана на эталонной конфигурации, приведенной в документе Trino 385):
хранится в etc/node.properties , содержит информацию о конфигурации каждого узла. Узел — это Trino Для одного экземпляра установки исходная конфигурация, на которую вы можете ссылаться, выглядит следующим образом:
node.environment=demo
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.environment
Представляет имя среды узла (может содержать только строчные буквы и символы подчеркивания). Все узлы одного кластера должны иметь одинаковое имя среды.node.id
Представляет уникальный идентификатор текущего узла (может содержать только строчные буквы, символы подчеркивания и тире).node.data-dir
Вы можете выбрать расположение журнала конфигурации (обратите внимание на права доступа к папке).хранится в etc/jvm.config на Яве Для параметров, связанных с запуском виртуальной машины, вы можете обратиться к следующим конфигурациям:
-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 и Для рабочих доступны следующие конфигурации для справки:
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 , который является дополнительной конфигурацией и может указывать самый низкий уровень вывода определенного журнала:
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 Разъем:
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 ошибка).
После добавления конфигурации вы можете запустить скрипт в папке установки:
$ bin/launcher run
Если операция прошла успешно, вы увидите следующую информацию (на самом деле будет распечатано много информации...):
INFO main io.trino.server.Server ======== SERVER STARTED
Вы также можете запустить следующую команду в фоновом режиме: Трино (терминал не выводит информацию):
$ bin/launcher start
проходить stop
может остановиться Trino (просто выйдите напрямую, если он запускается на переднем плане).
В этой главе рассказывается, как использовать Trino.
Trino Инструмент командной строки необходимо загружать отдельно (Docker Он будет автоматически интегрирован, если установлен), На официальном сайте или Maven Загрузка центральной библиотеки xxx-executable.jar файл и переименуйте его в 「trino」(Суффикс также следует удалить),А следующая команда позволяет изучить:
$ chmod +x trino
Переместите этот файл в bin папку, вы можете вызвать ее после настройки пути, MacOS Можно изменить ниже .zshrc Файл (изменить фактический путь):
export PATH=~/bin/:$PATH
Теперь вы можете запустить Trino CLI в терминале:
$ trino --version
Trino CLI 385
Если DirectUse является локальным тестом или docker Развертывание можно начать напрямую trino CLI, иначе нужно указать адрес сервера:
$ trino --server https://trino.example.com:8080
trino>
После успешного запуска вы можете напрямую написать SQL-запрос. Обратите внимание, что он должен заканчиваться точкой с запятой:
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
Ошибка, Докер При запуске такой проблемы нет.
Trino ОКпроходить JDBC Ехать в любом Java Доступен в приложении, которое представляет собой Type 4 водить машину,и Trino Родной протокол осуществляет прямую связь. Ниже приводится Spring Boot В качестве примера мы покажем, как представить Trino。
первыйпроходить maven Представьте соответствующие jar пакет (обязательно Jave 8 или и выше), вы также можете скачать jar Пакеты добавляются вручную:
<dependency>
<groupId>io.trino</groupId>
<artifactId>trino-jdbc</artifactId>
<version>385</version>
</dependency>
После установки драйвера необходимо выполнить настройку соединения Trino в файле конфигурации. Ниже приведен пример конфигурации в формате yaml:
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
Необходимо указать, выполняется ли аутентификация или нет.
После завершения Конфигурации необходимо вручную создать соответствующую Конфигурация источника данных (обратите внимание, что название аннотации не может повторяться):
@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);
}
Когда вызывается исследование, его можно реализовать с помощью автоматической сборки:
@Autowired
@Qualifier("prestoJdbcTemplate")
private JdbcTemplate prestoJdbcTemplate;
// Вызовите метод запроса, чтобы получить результаты запроса (на на основеString типа sql)
List<Map<String, Object>> res = prestoJdbcTemplate.queryForList(sql);
Trino Сервер предоставляет Web UI контролировать Trino Сопутствующая информация для локального развертывания Trino,Можеткпроходить http://localhost:8080 доступ:
Trino это подписка ANSI SQL Механизм запросов вводит некоторые новые характеристики, совместимые со стандартом. Следующее будет Trino середина SQL Представлены основные методы использования.
Trino можетпроходить SQL Доступ к любому внешнему источнику данных в основном включает в себя следующие четыре концепции:
Во-первых, вы можете найти все источники данных с помощью следующего оператора:
SHOW CATALOGS;
Catalog
---------
system
tpch
(2 rows)
Затем вы можете продолжить поиск всех схем в определенном источнике данных:
SHOW SCHEMAS FROM tpch;
Schema
------------------
information_schema
sf1
sf100
sf1000
sf10000
sf100000
sf300
sf3000
sf30000
tiny
(10 rows)
Сделайте еще один шаг, чтобы найти все таблицы в определенной схеме:
SHOW TABLES FROM tpch.sf1;
Table
---------
customer
lineitem
nation
orders
part
partsupp
region
supplier
(8 rows)
Можеткпроходить DESCRIBE
Проверять table Все рубрики середина:
DESCRIBE tpch.sf1.region;
Column | Type | Extra | Comment
-----------+--------------+-------+---------
regionkey | bigint | |
name | varchar(25) | |
comment | varchar(152) | |
(3 rows)
Далее вы можете использовать стандартный SQL для запроса данных:
SELECT name FROM tpch.sf1.region;
name
------------
AFRICA
AMERICA
ASIA
EUROPE
MIDDLE EAST
(5 rows)
Trino Поддерживает множество функций и операторов, Можно найти в Официальная документация середина для просмотра.
[1]
Trino Официальный сайт: https://trino.io/