Memory коннектор#

Memory коннектор хранит данные в оперативной памяти worker узлов, а метаданные на coordinator узле. Данные и метаданные будут утеряны при перезапуске узлов. Данный коннектор удобно использовать для временного хранения данных в памяти, например, для тестирования или отладки.

Конфигурация#

Для конфигурации Memory коннектора, создайте в директории etc/catalog файл <имя_каталога>.properties. Например, для создания каталога my_memory необходимо создать файл my_memory.properties. Добавьте в файл следующее содержимое:

connector.name=memory
memory.max-data-per-node=128MB

Параметр memory.max-data-per-node определяет максимальное количество памяти, которое может быть использовано для таблиц каталога на каждом из узлов (значение по умолчанию 128MB).

Примеры#

Создать таблицу в каталоге Memory коннектора:

CREATE TABLE my_memory.default.nation AS
SELECT * from tpch.tiny.nation;

Вставить данные в таблицу:

INSERT INTO my_memory.default.nation
SELECT * FROM tpch.tiny.nation;

Прочитать данные из таблицы:

SELECT * FROM my_memory.default.nation;

Вызвать команду DROP TABLE:

DROP TABLE my_memory.default.nation;

Типы данных#

Memory коннектор содержит схемы со стандартными типами данных, которые не требуют дополнительных трансформаций.

Поддержка SQL команд#

Коннектор поддерживает общие команды и команды чтения данных. В дополнение к этому коннектор поддерживает следующие команды:

DROP TABLE#

При вызове команды DROP TABLE освобождение памяти происходит не мгновенно, а после следующей операции записи в каталог.

Dynamic filtering#

Memory коннектор поддерживает оптимизацию dynamic filtering. Динамические фильтры используются при сканировании таблиц на worker узлах во время broadcast join.

По умолчанию CedrusData задерживает сканирование таблиц Memory коннектора до тех пор, пока вычисление соответствующих динамических фильтра не завершено. Что бы отключить это поведение, используйте параметр конфигурации memory.enable-lazy-dynamic-filtering в конфигурационном файле каталога.

Ограничения Memory коннектора#

  • При остановке или перезапуске worker узла происходит утеря данных, хранившихся в каталогах Memory коннектора. Последующие запросы на чтение к поврежденным таблицам будут возвращать ошибку. Поврежденную таблицу следует пересоздать вручную.

  • Если запрос на запись в таблицу Memory коннектора возвращает ошибку по какой-либо причине, таблица остается в неопределенном состоянии. Запросы на чтение из такой таблицы могут возвращать неполные данные или ошибку. Поврежденную таблицу следует пересоздать вручную.

  • В случае перезапуска coordinator, все метаданные о таблицах Memory коннектора будут утеряны. При этом сами данные не будут удалены, и продолжат занимать память на worker узлах.

  • Memory коннектор не работает корректно с несколькими coordinator узлами, так как между ними не происходит синхронизация метаданных.