# Подключение IBM watsonx.data Spark к dbt v1

Локальная разработка

* **Поддерживается**: IBM
* **Авторы**: Bayan Albunayan, Reema Alzaid, Manjot Sidhu
* **Репозиторий GitHub**: [IBM/dbt-watsonx-spark](https://github.com/IBM/dbt-watsonx-spark) [![](https://img.shields.io/github/stars/IBM/dbt-watsonx-spark?style=for-the-badge)](https://github.com/IBM/dbt-watsonx-spark)
* **Пакет PyPI**: `dbt-watsonx-spark` [![](https://badge.fury.io/py/dbt-watsonx-spark.svg)](https://badge.fury.io/py/dbt-watsonx-spark)
* **Канал Slack**:[]()
* **Поддерживаемая версия dbt**: v0.0.8 и новее
* **Поддержка dbt**: Not Supported
* **Минимальная версия платформы данных**: n/a

## Установка dbt-watsonx-spark

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

## Настройка dbt-watsonx-spark

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

Адаптер `dbt-watsonx-spark` позволяет использовать dbt для трансформации и управления данными в IBM watsonx.data Spark, используя возможности его распределённого SQL-движка.

Перед тем как продолжить, убедитесь, что у вас есть следующее:

* Активный экземпляр IBM watsonx.data. Для [IBM Cloud (SaaS)](https://cloud.ibm.com/docs/watsonxdata?topic=watsonxdata-getting-started). Для [Software](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.1.x?topic=installing-watsonxdata-developer-version)
* Развёрнутый **Native Spark engine** в watsonx.data. Для [IBM Cloud (SaaS)](https://cloud.ibm.com/docs/watsonxdata?topic=watsonxdata-prov_nspark). Для [Software](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.1.x?topic=spark-native-engine)
* Активный **Spark query server** в вашем **Native Spark engine**

Ознакомьтесь с официальной документацией по использованию **watsonx.data** с `dbt-watsonx-spark`:

* [Документация для IBM Cloud и SaaS-версий](https://cloud.ibm.com/docs/watsonxdata?topic=watsonxdata-dbt_watsonx_spark_inst)
* [Документация для IBM watsonx.data (Software)](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.1.x?topic=integration-data-build-tool-adapter-spark)

## Установка dbt-watsonx-spark

Примечание: установка адаптера не устанавливает `dbt v1` автоматически. Это связано с тем, что версии адаптеров и `dbt v1` разделены, чтобы избежать перезаписи существующих установок `dbt v1`. Используйте следующую команду для установки:

```sh
python -m pip install dbt-core dbt-watsonx-spark
```

## Настройка `dbt-watsonx-spark`

Для параметров конфигурации, специфичных для IBM watsonx.data, см. [настройки IBM watsonx.data.](https://docs.getdbt.tech/reference/resource-configs/watsonx-spark-config.md)

## Подключение к IBM watsonx.data Spark

Чтобы подключить dbt к watsonx.data Spark, настройте профиль в файле `profiles.yml`, который находится в директории `.dbt/` вашего домашнего каталога. Ниже приведён пример конфигурации для подключения к экземплярам IBM watsonx.data SaaS и Software:

\~/.dbt/profiles.yml

```yaml
project_name:
  target: "dev"
  outputs:
    dev:
      type: watsonx_spark
      method: http
      schema: [schema name]
      host: [hostname]
      uri: [uri]
      catalog: [catalog name]
      use_ssl: false
      auth:
        instance: [Watsonx.data Instance ID]
        user: [username]
        apikey: [apikey]
```

## Параметры host

Следующие поля профиля необходимы для настройки подключения к watsonx.data Spark. Для экземпляров IBM watsonx.data SaaS или Software, чтобы получить данные для профиля, нажмите **View connect details**, когда **query server** находится в статусе RUNNING в watsonx.data (как в SaaS, так и в Software). Откроется страница с параметрами подключения и конфигурацией профиля. Скопируйте и вставьте эти данные подключения в файл `profiles.yml`, расположенный в директории `.dbt` вашего домашнего каталога.

Следующие поля профиля необходимы для настройки подключения к watsonx.data Spark:

| Option     | Required/Optional             | Описание                                                                                                                                                                                                                                | Пример                                                                                 |
| ---------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `method`   | Required                      | Указывает метод подключения к Spark query server. Используйте `http`.                                                                                                                                                                   | `http`                                                                                 |
| `schema`   | Required                      | Выбор существующей схемы в Spark engine или создание новой схемы.                                                                                                                                                                       | `spark_schema`                                                                         |
| `host`     | Required                      | Имя хоста консоли watsonx.data. Подробнее см. [Getting connection information](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.1.x?topic=references-getting-connection-information#connection_info__conn_info_).                      | `https://dataplatform.cloud.ibm.com`                                                   |
| `uri`      | Required                      | URI вашего query server, запущенного в watsonx.data. Подробнее см. [Getting connection information](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.1.x?topic=references-getting-connection-information#connection_info__conn_info_). | `/lakehouse/api/v2/spark_engines/<sparkID>/query_servers/<queryID>/connect/cliservice` |
| `catalog`  | Required                      | Каталог, связанный с Spark engine.                                                                                                                                                                                                      | `my_catalog`                                                                           |
| `use_ssl`  | Optional (default: **false**) | Указывает, следует ли использовать SSL.                                                                                                                                                                                                 | `true` или `false`                                                                     |
| `instance` | Required                      | Для **SaaS** укажите CRN watsonx.data. Для **Software** — instance ID watsonx.data                                                                                                                                                      | `1726574045872688`                                                                     |
| `user`     | Required                      | Имя пользователя для экземпляра watsonx.data. Для **SaaS** используйте email в качестве имени пользователя                                                                                                                              | `username` или `user@example.com`                                                      |
| `apikey`   | Required                      | Ваш API key. Подробнее: для [SaaS](https://www.ibm.com/docs/en/software-hub/5.1.x?topic=started-generating-api-keys), для [Software](https://cloud.ibm.com/docs/account?topic=account-userapikey\&interface=ui#manage-user-keys)        | `API key`                                                                              |

### Схемы и каталоги

При выборе каталога убедитесь, что у пользователя есть права на чтение и запись. Этот выбор не ограничивает возможность выполнять запросы к указанной или созданной схеме, а также задаёт расположение по умолчанию для моделей с материализациями `tables`, `views` и `incremental`.

### Проверка SSL

* Если экземпляр Spark использует незащищённое HTTP-подключение, установите `use_ssl` в `false`.
* Если экземпляр использует `HTTPS`, установите значение `true`.

## Дополнительные параметры

Следующие поля профиля являются необязательными. Вы можете настроить сессию экземпляра и поведение dbt для подключения.

| Profile field     | Описание                                                               | Пример |
| ----------------- | ---------------------------------------------------------------------- | ------ |
| `threads`         | Количество потоков, которые должен использовать dbt (по умолчанию `1`) | `8`    |
| `retry_all`       | Включает автоматические повторы при временных ошибках подключения.     | `true` |
| `connect_timeout` | Таймаут установления соединения (в секундах).                          | `5`    |
| `connect_retries` | Количество попыток повторного подключения при ошибках.                 | `3`    |

## Ограничения и особенности

* **Поддерживается только HTTP**: Нет поддержки ODBC, Thrift или соединений на основе сеансов.
* **Ограниченная поддержка dbt**: Не полностью совместим с dbt.
* **Сохранение метаданных**: Некоторые возможности dbt, например описания столбцов, могут сохраняться не во всех форматах таблиц.
