96 lines
4.3 KiB
Markdown
96 lines
4.3 KiB
Markdown
|
## Структура модуля данных
|
|||
|
|
|||
|
## Подключение модуля данных к базовому модулю
|
|||
|
|
|||
|
Чтобы модуль данных можно было использовать в базовом модуле, его нужно подключить, создав компонент `DataBox` специального типа - ссылку на модуль данных.
|
|||
|
|
|||
|
```yaml
|
|||
|
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. Поэтому, чтобы указать ссылку на компонент данных, нужно знать его полное имя: "имя модуля" + "имя компонента".
|
|||
|
|
|||
|
## Использование модуля данных в пайплайне
|
|||
|
|
|||
|
Чтобы подключить модуль данных к пайплайну, нужно
|
|||
|
|
|||
|
1. Использовать MLDev-пайплайн
|
|||
|
2. Подключить сам модуль данных к пайплайну через атрибут `mountDataset` в разделе `connectedBoxes`.
|
|||
|
3. Использовать класс `StageSrc` вместо `StageVar` при указании переменной.
|
|||
|
4. Указать, откуда монтируется переменная, через `mountFrom`.
|
|||
|
|
|||
|
Например, в файле с определением `UnipPipeline`,
|
|||
|
|
|||
|
```yaml
|
|||
|
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](./api-module.md).
|
|||
|
|
|||
|
Основные отличия:
|
|||
|
|
|||
|
1. Поддерживаются только запросы GET, то есть данные можно только считывать, но не записывать.
|
|||
|
2. В ссылках вместо `files` используется ключевое слово `datasets`, а вместо названия компонента DataBox - название компонента DatasetComponent.
|
|||
|
|
|||
|
Пример:
|
|||
|
|
|||
|
|
|||
|
```sh
|
|||
|
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"
|
|||
|
```
|