Примеры работы с объектами Кипариса

В данном разделе приведены примеры работы с объектами Кипариса.

Статические таблицы

Создание

Для создания таблицы используется команда 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

Коэффициент репликации

Количество реплик чанков таблицы задается атрибутом replication_factor. По умолчанию оно равно 3.

yt get //home/dev/test_table/@replication_factor
3

Коэффициент репликации можно менять:

$ yt set //home/dev/test_table/@replication_factor 5

В этом случае преобразование произойдет через некоторое время в фоновом режиме.

Управление коэффициентом репликации новых чанков таблицы осуществляется опциями 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

Новые чанки, добавляемые в таблицу, будут получать коэффициент репликации, установленный в опции upload_replication_factor; далее фоновый процесс будет асинхронно реплицировать их для достижения установленного на таблице коэффициента репликации.

Медиум

Чтобы переместить таблицу в другой медиум, измените значение атрибута 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/@chunk_media_statistics

{
    "ssd_blobs" = {
        "chunk_count" = 2126;
        "uncompressed_data_size" = 9667220402266;
        "compressed_data_size" = 4954465956017;
        "data_weight" = 10764306825793;
        "max_block_size" = 6584787;
    };
}

Объем указан в байтах.