Временные данные
Директория для временных данных
Через прагму yt.TmpFolder
пользователь может задавать директорию для размещения временных таблиц и файлов. Такая необходимость возникает в следующих случаях:
- Нет доступа на запись в директорию
//tmp
YTsaurus-кластера. - Запрос обрабатывает таблицы с чувствительными данными. По умолчанию временные таблицы и файлы сохраняются в
//tmp
, куда есть доступ на чтение у всех пользователей кластера. Чтобы избежать раскрытия чувствительной информации, необходимо явно задавать в запросе директорию для временных данных, закрытую ACL.
Контроль роста TmpFolder директории
При использовании в запросе прагмы yt.TmpFolder
в указанной директории постепенно начинают накапливаться данные. В ней создаются следующие поддиректории:
- query_cache — кеш запросов;
- tmp — временные таблицы, которые существуют только на время работы запроса;
- new_cache — файловый кеш YTsaurus API:
- исполняемые файлы YQL;
- пользовательские и системные UDF;
- приложенные к запросу файлы;
- таблицы, используемые в MapJoin, если передаются не родным для YTsaurus способом.
Поддиректория query_cache и время жизни её содержимого управляется прагмами yt.QueryCacheMode и yt.QueryCacheTtl. Для yt.QueryCacheMode="disable"
кеш запросов полностью отключается и данная поддиректория не создаётся/не используется. Прагма yt.QueryCacheTtl
позволяет ограничить время жизни таблиц в кеше запросов.
Временные таблицы запроса из поддиректории tmp очищаются автоматически после завершения запроса. Исключение составляют запросы, в которых задана прагма yt.ReleaseTempData="never"
, и таблицы, которые отдаются в результатах запросов как Full result. Временем жизни таких таблиц можно управлять прагмой yt.TempTablesTtl. Расположение временных таблиц можно отдельно переопределить через прагму yt.TablesTmpFolder.
Время жизни объектов внутри new_cache управляется прагмой yt.FileCacheTtl. Из этой директории можно исключить исполняемые файлы YQL и UDF-ки, задав прагму yt.BinaryTmpFolder с указанием отдельной директории и своим TTL (см. yt.BinaryExpirationInterval). Также можно вынести таблицы, используемые в MapJoin, в отдельную директорию через прагму yt.TableContentTmpFolder, но при этом стоит помнить, что в данных таблицах могут присутствовать чувствительные данные.