4.3 KiB
Структура модуля данных
Подключение модуля данных к базовому модулю
Чтобы модуль данных можно было использовать в базовом модуле, его нужно подключить, создав компонент DataBox
специального типа - ссылку на модуль данных.
apiVersion: "unified-platform.cs.hse.ru/v1"
kind: DataBox
metadata:
name: dataref
namespace: pu-username-pa-appname
spec:
datasetReference:
datasetComponentRef:
name: some-data-collection
namespace: pu-otheruser-pa-datamodulename
dataref
- имяDataBox
в текущем модуле - вpu-username-pa-appname
some-data-collection
- название компонентаDatasetComponent
в модуле данных.pu-otheruser-pa-datamodulename
- название "модуля" в модуле данных.
Модуль данных разворачивается так же, как и базовый модуль, и тоже содержит набор компонентов, определяемых манифестами в формате YAML. Поэтому, чтобы указать ссылку на компонент данных, нужно знать его полное имя: "имя модуля" + "имя компонента".
Использование модуля данных в пайплайне
Чтобы подключить модуль данных к пайплайну, нужно
- Использовать MLDev-пайплайн
- Подключить сам модуль данных к пайплайну через атрибут
mountDataset
в разделеconnectedBoxes
. - Использовать класс
StageSrc
вместоStageVar
при указании переменной. - Указать, откуда монтируется переменная, через
mountFrom
.
Например, в файле с определением UnipPipeline
,
stage_prepare: !BasicStage &stage_prepare
name: stage_prepare
inputs:
- !StageSrc # Пункт 3 - переменная типа StageSrc
name: preparation_data
path: ./data/preparation
version: v1
outputs:
- !StageVar
name: internal_state
script:
- python src/prepare.py
...
# остальные этапы, если есть
...
pipeline: !UnipPipeline
name: my-project
namespace: pu-username-pa-appname
variables:
- name: preparation_data
mountFrom: # Пункт 4 - переменная из ящика mydataset
box:
name: mydataset
- name: internal_state
- name: user_report
runs:
- *container_stage_prepare
- *container_stage_complete
connected_boxes:
- name: user-box
path: /userdata/
default: true
mount_s3_box:
s3_box_name: users
- name: mydataset
mount_dataset: # Пункт 2 - подключение ящика dataref к пайплайну под именем mydataset
dataset_reference_name: dataref
Подключенный таким образом модуль данных можно использовать как обычную переменную пайплайна, дальнейшая работа с модулем данных не отличается от работы с другими переменными.
Доступ к модулю данных через API
Модуль данных поддерживает работу через API, аналогичную файловому API.
Основные отличия:
- Поддерживаются только запросы GET, то есть данные можно только считывать, но не записывать.
- В ссылках вместо
files
используется ключевое словоdatasets
, а вместо названия компонента DataBox - название компонента DatasetComponent.
Пример:
curl -X GET https://platform.stratpro.hse.ru/pu-otheruser-pa-datamodulename/datasets/some-data-collection/data/my_dir/my_file.txt -H "Content-Type: application/json" -u "username:password"