# Настройка Sail

* **Поддерживается**: LakeSail
* **Авторы**: LakeSail
* **Репозиторий GitHub**: [lakehq/dbt-sail](https://github.com/lakehq/dbt-sail) [![](https://img.shields.io/github/stars/lakehq/dbt-sail?style=for-the-badge)](https://github.com/lakehq/dbt-sail)
* **Пакет PyPI**: `dbt-sail` [![](https://badge.fury.io/py/dbt-sail.svg)](https://badge.fury.io/py/dbt-sail)
* **Канал Slack**: [LakeSail Community Slack](https://www.launchpass.com/lakesail-community/free)
* **Поддерживаемая версия dbt**: v1.8.0 и новее
* **Поддержка dbt**: Not Supported
* **Минимальная версия платформы данных**: n/a

## Установка dbt-sail

Установите адаптер с помощью \`pip\`: `python -m pip install dbt-sail`

## Настройка dbt-sail

Конфигурацию, специфичную для Sail, см. на странице [настроек Sail.](https://docs.getdbt.tech/reference/resource-configs/spark-configs.md)

## Подключение к Sail с помощью **dbt-sail**

[Sail](https://github.com/lakehq/sail) — это прямая замена Apache Spark, которую разрабатывает и поддерживает [LakeSail](https://lakesail.com/). Sail реализует протокол Spark Connect, поэтому `dbt-sail` представляет собой тонкую обёртку над `dbt-spark`, которая подключается к Sail вместо Spark на JVM. `dbt-sail` поддерживает тот же набор возможностей, что и `dbt-spark`.

`dbt-sail` поддерживает два режима подключения:

* `embedded` — запускает сервер Sail в текущем процессе с помощью [`pysail`](https://pypi.org/project/pysail/). Внешний сервер не требуется.
* `remote` — подключается к уже работающему серверу Sail через Spark Connect.

## Настройка профиля

\~/.dbt/profiles.yml

```yaml
your_profile_name:
  target: dev
  outputs:
    dev:
      type: sail
      mode: embedded   # или 'remote'
      host: 127.0.0.1  # обязателен для 'remote'; по умолчанию 127.0.0.1 для 'embedded'
      port: 50051      # используется в режиме 'remote'; игнорируется в режиме 'embedded'
      schema: SCHEMA_NAME
      threads: 1
```

| Поле                     | Описание                                                            | Обязательное?            | Значение по умолчанию  |
| ------------------------ | ------------------------------------------------------------------- | ------------------------ | ---------------------- |
| `type`                   | Должно иметь значение `sail`.                                       | Да                       | -                      |
| `mode`                   | Режим подключения: `embedded` или `remote`.                         | Да                       | -                      |
| `host`                   | Имя хоста сервера Sail. Обязательно для режима `remote`.            | Обязательно для `remote` | `127.0.0.1` (embedded) |
| `port`                   | Порт Spark Connect на сервере Sail. Используется в режиме `remote`. | Нет                      | `50051`                |
| `schema`                 | Схема по умолчанию, в которой dbt создаёт объекты.                  | Да                       | -                      |
| `threads`                | Количество потоков, используемых dbt.                               | Нет                      | `1`                    |
| `server_side_parameters` | Словарь параметров, передаваемых в базовый сеанс Spark.             | Нет                      | `{}`                   |

Поскольку `dbt-sail` расширяет `dbt-spark`, также поддерживаются дополнительные поля профиля `dbt-spark`. Полный список приведён на странице [Настройка Apache Spark](https://docs.getdbt.tech/docs/local/connect-data-platform/spark-setup.md).

### Пример: режим embedded

\~/.dbt/profiles.yml

```yaml
my_sail_project:
  target: dev
  outputs:
    dev:
      type: sail
      mode: embedded
      schema: analytics
      threads: 4
```

### Пример: режим remote

\~/.dbt/profiles.yml

```yaml
my_sail_project:
  target: dev
  outputs:
    dev:
      type: sail
      mode: remote
      host: sail.internal
      port: 50051
      schema: analytics
      threads: 4
```

## Настройка ресурсов

`dbt-sail` поддерживает те же настройки ресурсов, что и `dbt-spark`. Сведения о вариантах материализации, инкрементальных стратегиях и других настройках на уровне моделей приведены на странице [Настройки Apache Spark](https://docs.getdbt.tech/reference/resource-configs/spark-configs.md).
