Примеры работы с объектами Кипариса
В данном разделе приведены примеры работы с объектами Кипариса.
Статические таблицы
Создание
Для создания таблицы используется команда create
.
yt create table //home/dev/test_table
1282c-1ed72c-3fe0191-443cf2ee
Удаление
Для удаления таблицы используется команда remove
.
yt remove //home/dev/test_table
Чтение
Чтобы прочитать существующую таблицу <table>
, используйте команду read-table
.
yt read-table [--format FORMAT]
[--table-reader TABLE_READER]
<table>
Опция --format
определяет формат выходных данных. Поддерживаются форматы json
, yson
, dsv
и schemaful_dsv
. Подробнее можно прочитать в разделе Форматы.
yt read-table --format dsv //home/dev/test_table
day=monday time=10
day=wednesday time=20
day=friday time=30
Опция --table-reader
позволяет изменять параметры чтения из таблицы.
Семплирование
Атрибут sampling_rate
задает процент данных, которые необходимо прочесть из входной таблицы.
yt read-table --format dsv --table-reader '{"sampling_rate"=0.3}' //home/dev/test_table
day=monday time=10
day=friday time=30
В данном примере команда read-table
вернет 30% всех строк из входной таблицы.
Атрибут sampling_seed
управляет генератором случайных чисел, который отбирает строки. Гарантируется, что при одинаковом sampling_seed
и том же наборе входных чанков будет сгенерирован одинаковый выход. Если атрибут sampling_seed
не был указан, то он будет случайным.
yt read-table --format dsv --table-reader '{"sampling_seed"=42;"sampling_rate"=0.3}' //home/dev/test_table
Чтобы поместить результат семплирования в другую таблицу, запустите map
:
yt map cat --src //home/dev/input --dst //home/dev/output --spec '{job_io = {table_reader = {sampling_rate = 0.001}}}' --format yson
Примечание
При использовании семплирования независимо от указанного атрибута sampling_rate
все данные читаются с диска.
Перезапись
Команда write-table
перезаписывает существующую таблицу <table>
переданными данными.
yt write-table [--format FORMAT]
[--table-writer TABLE_WRITER]
<table>
Опция --format
определяет формат входных данных. Поддерживаются форматы json
, yson
, dsv
и schemaful_dsv
. Подробнее можно прочитать в разделе Форматы.
yt write-table --format dsv //home/dev/test_table
time=10 day=monday
time=20 day=wednesday
time=30 day=friday
^D
Чтобы добавить записи в таблицу, используйте опцию <append=true>
перед путем таблицы.
cat test_table.json
{"time":"10","day":"monday"}
{"time":"20","day":"wednesday"}
{"time":"30","day":"friday"}
cat test_table.json | yt write-table --format json "<append=true>"//home/dev/test_table
Опция --table-writer
позволяет изменять параметры записи в таблицу:
Ограничение на размеры строк в таблице
При записи табличных данных система YTsaurus проверяет их размер. Запись завершится ошибкой, если размер превысит максимально допустимое значение.
По умолчанию максимальный размер строки — 16 МБ. Чтобы изменить это значение, используйте опцию --table-writer
, параметр max_row_weight
. Укажите значение в байтах.
cat test_table.json | yt write-table --format json --table-writer {"max_row_weight"=33554432} //home/dev/test_table
Примечание
Значение параметра max_row_weight
не может превышать 128 МБ.
Размер чанка
Атрибут desired_chunk_size
определяет размер чанка в байтах.
cat test_table.json | yt write-table --format json --table-writer {"desired_chunk_size"=1024} //home/dev/test_table
Коэффициент репликации
Управление коэффициентом репликации новых чанков таблицы осуществляется атрибутами min_upload_replication_factor
и upload_replication_factor
.
Атрибут upload_replication_factor
задает количество синхронных реплик, создаваемых во время записи новых данных в таблицу.
Атрибут min_upload_replication_factor
задает минимальное количество успешно записанных чанков. Значение по умолчанию обоих атрибутов — 2, максимальное значение — 10.
cat test_table.json | yt write-table --format json --table-writer '{"upload_replication_factor"=5;"min_upload_replication_factor"=3}' //home/dev/test_table
Чтобы увеличить число реплик уже существующей таблицы, воспользуйтесь одним из способов:
- запустите операцию Merge:
yt merge --mode auto --spec '{"force_transform"=true; "job_io"={"table_writer"={"upload_replication_factor"=5}}}' --src <> --dst <>
- увеличьте атрибут
replication_factor
таблицы. В этом случае преобразование произойдет через некоторое время в фоновом режиме. Новые записи, добавляемые в таблицу, получат коэффициент репликации, установленный в атрибутеupload_replication_factor
. Далее фоновый процесс будет асинхронно реплицировать чанки для достижения установленного на таблице коэффициента репликации.
yt set //home/dev/test_table/@replication_factor 5
Медиум
Чтобы переместить таблицу в другой медиум, измените значение атрибута primary_medium
.
Новые данные, записываемые в таблицу, будут сразу попадать на новый медиум, старые данные будут перемещены в фоновом режиме.
Чтобы форсированно переместить данные в новый медиум, запустите операцию Merge:
yt set //home/dev/test_table/@primary_medium ssd_blobs
yt merge --mode auto --spec '{"force_transform"=true;}' --src //home/dev/test_table --dst //home/dev/test_table
Чтобы проверить, изменился ли медиум, в котором находится таблица, выполните команду.
yt get //home/dev/test_table/@resource_usage
{
"tablet_count" = 0;
"disk_space_per_medium" = {
"ssd_blobs" = 930;
};
"tablet_static_memory" = 0;
"disk_space" = 930;
"node_count" = 1;
"chunk_count" = 1;
}
Объем указан в байтах.