Примеры работы с объектами Кипариса
В данном разделе приведены примеры работы с объектами Кипариса.
Статические таблицы
Создание
Для создания таблицы используется команда 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;
};
}
Объем указан в байтах.