Подключение к кластеру Trino
Вы можете подключиться к кластеру Managed Service for Trino:
-
Через интернет с использованием SSL-соединения.
-
С виртуальных машин Yandex Cloud, расположенных в той же облачной сети.
Получение SSL-сертификата
Чтобы использовать шифрованное соединение, получите SSL-сертификат:
mkdir -p ~/.trino && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
--output-document ~/.trino/root.crt && \
chmod 0655 ~/.trino/root.crt
Сертификат будет сохранен в файле ~/.trino/root.crt
.
mkdir $HOME\.trino; curl.exe -o $HOME\.trino\root.crt https://storage.yandexcloud.net/cloud-certs/CA.pem
Сертификат будет сохранен в файле $HOME\.trino\root.crt
.
Для использования графических IDE сохраните сертификат
Инструменты командной строки
Trino CLI
Если у вас еще нет интерфейса командной строки Trino, установите его по инструкции на официальном сайте Trino
Чтобы подключиться к кластеру Managed Service for Trino:
-
Создайте IAM-токен и поместите его в переменную окружения
TRINO_PASSWORD
:export TRINO_PASSWORD=$(yc iam create-token)
IAM-токен, хранящийся в переменной
TRINO_PASSWORD
, служит паролем для подключения к кластеру Managed Service for Trino. Чтобы использовать его, укажите при подключении флаг--password
. -
Подключитесь к кластеру Managed Service for Trino:
./trino <URL_координатора> --user iam --password
Вы можете скопировать URL координатора в поле Координатор на странице обзора кластера Trino в Консоли управления
.
Подключение из графических IDE
Перед подключением:
-
Создайте IAM-токен:
yc iam create-token
-
Сохраните полученный токен. Он будет использоваться в качестве пароля при подключении.
- Создайте источник данных:
- Выберите в меню File → New → Data Source → Trino.
- Введите имя источника данных.
- Укажите параметры подключения на вкладке General:
- Host —
c-<идентификатор_кластера>.trino.yandexcloud.net
; - Port —
443
; - User —
iam
; - Password — созданный ранее IAM-токен.
- Host —
- На вкладке SSH/SSL:
- Включите настройку Use SSL.
- В поле CA file укажите путь к файлу SSL-сертификата для подключения.
- Нажмите ссылку Test Connection для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка Trino.
- Нажмите кнопку Далее.
- Укажите параметры подключения на вкладке Главное:
- Хост —
c-<идентификатор_кластера>.trino.yandexcloud.net
; - Порт —
443
. - В блоке Аутентификация укажите:
- Имя пользователя —
iam
; - Пароль пользователя — созданный ранее IAM-токен.
- Имя пользователя —
- Хост —
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
WebSQL
-
В консоли управления
откройте сервис Managed Service for Trino. -
Откройте ваш кластер Managed Service for Trino.
-
Перейдите в раздел WebSQL.
-
Нажмите кнопку Перейти в WebSQL.
-
В открывшемся редакторе SQL-запросов выполните запрос:
SELECT version() AS version;
В ответе на запрос будет информация о версии Trino.
Примеры строк подключения
Python
Перед подключением:
-
Установите зависимости:
pip3 install trino
-
Создайте IAM-токен и поместите его в переменную окружения
TOKEN
:export TOKEN=$(yc iam create-token)
-
Пример кода:
connect.py
import os from contextlib import closing from trino.dbapi import connect from trino.auth import BasicAuthentication TIMEOUT = 10 COORDINATOR_URL = '<URL_координатора>' IAM_TOKEN = os.environ['TOKEN'] def get_version(): auth = BasicAuthentication(username='iam', password=IAM_TOKEN) with closing(connect(host=COORDINATOR_URL, port=443, auth=auth, request_timeout=TIMEOUT)) as conn: with closing(conn.cursor()) as cur: cur.execute('SELECT version() as version') rows = cur.fetchall() print(rows[0][0]) if __name__ == "__main__": get_version()
Вы можете скопировать URL координатора в поле Координатор на странице обзора кластера Trino в консоли управления
. -
Подключение:
python3 connect.py
Java
Перед подключением:
-
Установите зависимости:
sudo apt update && sudo apt install --yes openjdk-21-jre maven
-
Создайте директорию для проекта Maven:
cd ~/ && mkdir -p project/src/main/java/com/example && cd project/
-
Создайте конфигурационный файл для Maven:
pom.xml
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>app</artifactId> <version>0.1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>io.trino</groupId> <artifactId>trino-jdbc</artifactId> <version>469</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.7.1</version> <executions> <execution> <goals> <goal>single</goal> </goals> <phase>package</phase> <configuration> <descriptorRefs> <descriptorRef> jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.4.2</version> <configuration> <archive> <manifest> <mainClass>com.example.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
-
Создайте IAM-токен и поместите его в переменную окружения
TOKEN
:export TOKEN=$(yc iam create-token)
-
Пример кода:
src/main/java/com/example/App.java
package com.example; import java.sql.DriverManager; import java.util.Properties; public class App { private static final String COORDINATOR_URL = "c-<идентификатор_кластера>.trino.yandexcloud.net"; public static void main(String[] args) { String url = String.format("jdbc:trino://%s", COORDINATOR_URL); String iamToken = System.getenv("TOKEN"); Properties properties = new Properties(); properties.setProperty("user", "iam"); properties.setProperty("password", iamToken); properties.setProperty("SSL", "true"); try (var connection = DriverManager.getConnection(url, properties)) { var rs = connection.createStatement().executeQuery("SELECT version() as VERSION"); if (rs.next()) { System.out.println(rs.getString(1)); } } catch (Exception e) { e.printStackTrace(); } } }
Вы можете получить идентификатор кластера Managed Service for Trino в консоли управления
, вместе со списком кластеров Managed Service for Trino в каталоге. -
Сборка и подключение:
mvn clean package && \ java -jar target/app-0.1.0-jar-with-dependencies.jar
Node.js
Перед подключением:
-
Установите зависимости:
sudo apt update && sudo apt install --yes nodejs npm && \ npm install trino-client
-
Создайте IAM-токен и поместите его в переменную окружения
TOKEN
:export TOKEN=$(yc iam create-token)
app.mjs
"use strict";
import {BasicAuth, Trino} from 'trino-client';
const COORDINATOR_URL = '<URL_координатора>'
let TOKEN = process.env.TOKEN
async function get_version() {
const trino = Trino.create({server: COORDINATOR_URL,auth: new BasicAuth('iam', TOKEN)});
const query = await trino.query('SELECT version() as VERSION');
const queryResult = await query.next()
console.log(queryResult.value.data[0][0])
}
get_version();
Вы можете скопировать URL координатора в поле Координатор на странице обзора кластера Trino в консоли управления
Подключение:
node app.mjs