Настройки Trino ADB connector

В данной статье описаны параметры конфигурации коннектора Trino для ADB.

Параметры каталога Trino

Следующие конфигурационные параметры могут использоваться при создании нового каталога Trino для работы с кластером ADB. Данные параметры можно указать в ADCM или с помощью предложения WITH. Например:

CREATE CATALOG test_adb_catalog USING adb
WITH (
  "connection-url" = 'jdbc:postgresql://<adb_master>:5432/trino',
  ...
  "configuration_param1" = "value"
  "configuration_param2" = "value"
);
Параметр Описание Значение по умолчанию

adb.fetch-size

Максимальное количество строк для выборки. Если значение не указано, оно вычисляется по формуле:

 — 

adb.array-mapping

Способ преобразования данных типа массив. Возможные значения: DISABLED, AS_ARRAY

DISABLED

adb.enable-string-pushdown-with-collate

Включает оптимизацию pushdown для строковых типов данных с учетом collate

false

adb.include-system-tables

Указывает, следует ли включать системные таблицы

false

adb.max-scan-parallelism

Максимальный уровень параллелизма для сканирования таблиц

1

adb.connector.write-buffer-size

Максимальный объем памяти, выделяемый на один приемник (sink) для запросов на запись

64MB

adb.connector.read-buffer-size

Максимальный объем памяти, выделяемый на объект курсора для запросов на чтение

64MB

adb.connector.gpfdist.retry-timeout

Значение ADB-свойства gpfdist_retry_timeout. Если не указано, используется значение ADB по умолчанию

 — 

adb.connector.gp-parallel-cursor.enabled

Активирует режим gp-parallel-cursor для чтения данных из ADB

false

Свойства таблиц ADB

Следующие свойства таблиц ADB могут быть установлены с помощью предложения WITH при выполнении команд CREATE TABLE/CREATE TABLE AS. Данные свойства по умолчанию имеют значение NULL. Если свойство явно не указано при создании таблицы с помощью коннектора, будут использоваться дефолтные значения кластера ADB.

Свойство таблицы Описание

distributed

Указывает способ распределения данных таблицы, который не зависит от конкретных столбцов. Допустимые значения: randomly, replicated. Для хеш-распределения используйте параметр distributed_by

distributed_by

Указывает хеш-распределение данных таблицы. Значение должно представлять собой массив имен столбцов, например ARRAY['col1', 'col2']

appendoptimized

Если установлено значение true, создается таблица типа append-optimized. При значении false создается таблица типа heap

blocksize

Устанавливает размер блока в байтах для таблиц типа append-optimized

orientation

Устанавливает тип ориентации данных в таблицах типа append-optimized. Допустимые значения: column, row

checksum

Установка true включает проверку контрольных сумм CRC для таблиц типа append-optimized

compresstype

Указывает алгоритм сжатия данных. Допустимые значения: zlib, zstd, rle_type, none. Фактическая поддержка конкретного алгоритма зависит от версии ADB

compresslevel

Устанавливает уровень сжатия. Допустимые значения зависят от алгоритма сжатия:

  • zlib: 1 — 9;

  • zstd: 1 — 19;

  • rle_type: 1 — 4.

fillfactor

Устанавливает коэффициент заполнения для heap-таблиц. Допустимые значения: от 10 до 100

Ниже приведен пример установки параметров ADB-таблицы c помощью коннектора Trino.

CREATE TABLE nations (
  n_nationkey integer,
  n_name char(25),
  n_regionkey integer,
  n_comment varchar(152)
)
WITH (
  distributed_by = ARRAY['nationkey', 'regionkey'], (1)
  appendoptimized = true, (2)
  orientation = 'columnar', (3)
  compresstype = 'zstd' (4)
)
1 Хеш-распределение по нескольким столбцам.
2 Установка типа таблицы append-optimized.
3 Использование колоночной ориентации данных.
4 Установка уровня сжатия с использованием алгоритма ZSTD.

Сопоставление типов данных

При обмене данными между ADB и коннектором Trino типы данных преобразуются в соответствии со следующими правилами.

Преобразование типов ADB в Trino

 

Тип данных ADB Тип данных Trino

BIT

BOOLEAN

BOOLEAN

BOOLEAN

SMALLINT

SMALLINT

INTEGER

INTEGER

BIGINT

BIGINT

REAL

REAL

DOUBLE

DOUBLE

NUMERIC(p, s)

DECIMAL(p, s)

Тип DECIMAL(p, s) является алиасом NUMERIC(p, s)

CHAR(n)

CHAR(n)

VARCHAR(n)

VARCHAR(n)

ENUM

VARCHAR

BYTEA

VARBINARY

DATE

DATE

TIME(n)

TIME(n)

TIMESTAMP(n)

TIMESTAMP(n)

TIMESTAMPTZ(n)

TIMESTAMP(n) WITH TIME ZONE

MONEY

VARCHAR

UUID

UUID

JSON

JSON

JSONB

JSON

HSTORE

MAP(VARCHAR, VARCHAR)

ARRAY

DISABLED, ARRAY

Больше информации доступно в разделе Особенности работы с ARRAY

Преобразование типов Trino в ADB

 

Тип данных ADB Тип данных Trino

BOOLEAN

BOOLEAN

SMALLINT

SMALLINT

TINYINT

SMALLINT

INTEGER

INTEGER

BIGINT

BIGINT

REAL

REAL

DOUBLE

DOUBLE

DECIMAL(p, s)

NUMERIC(p, s)

Тип DECIMAL(p, s) является алиасом NUMERIC(p, s)

CHAR(n)

CHAR(n)

VARCHAR(n)

VARCHAR(n)

VARBINARY

BYTEA

DATE

DATE

TIME(n)

TIME(n)

TIMESTAMP(n)

TIMESTAMP(n)

TIMESTAMP(n) WITH TIME ZONE

TIMESTAMPTZ(n)

UUID

UUID

JSON

JSONB

ARRAY

ARRAY

Больше информации доступно в разделе Особенности работы с ARRAY

Параметры сопоставления типов данных

Следующие конфигурационные параметры позволяют изменить логику приведения типов данных.

Параметр Описание Значение по умолчанию

unsupported-type-handling

Определяет поведение при обработке столбцов с неподдерживаемым типом данных. Допустимые значения:

  • IGNORE — данные столбца игнорируются.

  • CONVERT_TO_VARCHAR — значение столбца преобразуется в тип VARCHAR неограниченной длины.

Соответствующий параметр сессии — unsupported_type_handling

IGNORE

jdbc-types-mapped-to-varchar

Список типов данных, которые необходимо принудительно привести к типу VARCHAR неограниченной длины (даже если указанный тип поддерживается коннектором). Например, jdbc-types-mapped-to-varchar=VARBINARY,UUID,

 — 

Особенности работы с DECIMAL

По умолчанию коннектор Trino выдает ошибку при обработке столбцов типа DECIMAL без явного указания параметров точности (precision) и масштаба (scale). Если конфигурационный параметр decimal-mapping (или параметр сессии decimal_mapping) имеет значение allow_overflow, то столбцы типа DECIMAL без явного указания точности/масштаба будут преобразованы в тип данных коннектора DECIMAL(38,0). Используя конфигурационный параметр decimal-default-scale (или параметр сессии decimal_default_scale), можно указать собственное значение масштаба. Значение точности всегда равно 38.

Если значение DECIMAL не помещается в отведенные разряды точности/масштаба без округления, коннектор выдает ошибку. Это поведение можно изменить, включив автоматическое округление с помощью параметра коннектора decimal-rounding-mode (или параметра сессии decimal_rounding_mode). Поддерживаются следующие значения округления: UNNECESSARY (по умолчанию), UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN и HALF_EVEN. Эти значения соответствуют правилам округления, принятым в Java 17.

Особенности работы с ARRAY

Тип данных ARRAY в ADB не поддерживает массивы фиксированной размерности, в то время как коннектор Trino для ADB поддерживает только одномерные массивы. С помощью параметра adb.array-mapping (параметр сессии array_mapping) можно указать, как коннектор должен обрабатывать типы данных ARRAY. Допустимые значения параметра:

  • DISABLED (по умолчанию) — коннектор возвращает ошибку при обработке столбцов типа ARRAY.

  • AS_ARRAY — коннектор обрабатывает массивы ADB как тип данных ARRAY. Это значение подходит для массивов ADB, которые фактически являются одномерными. Для многомерного массива будет сформировано исключение.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней