(Версии dbt: v2.0 и новее)
Подключение Apache Spark к dbt v2 Бета-версия
dbt v2 поддерживает Apache Spark, ускоряя компиляцию и выполнение ваших проектов dbt на базе Spark. В настоящее время dbt v2 поддерживает только Apache Spark 3.0.
dbt v2 и Spark
При работе со Spark dbt v2 использует диалект Databricks SQL для статического анализа. Databricks SQL — это надмножество Spark SQL, поэтому ваш SQL проверяется в соответствии с семантикой Databricks. Это обеспечивает всестороннюю проверку ошибок и функции анализа SQL. В одном из будущих выпусков планируется добавить отдельный диалект Spark SQL для статического анализа.
Аутентификация
Адаптер Spark в dbt v2 поддерживает:
- Thrift
- Механизм PLAIN протокола Simple Authentication and Security Layer (SASL)
- Без SASL (NOSASL)
- Livy
- Базовую аутентификацию (имя пользователя и пароль)
- При развертывании в Amazon Web Services (AWS): AWS Signature Version 4
- Поддерживается аутентификация с использованием единого входа, служебных учетных записей или пользовательских токенов
Настройка dbt v2
Настройте подключение к Spark в profiles.yml:
~/.dbt/profiles.yml
your_profile_name:
target: dev
outputs:
dev:
type: spark
method: CONNECTION_METHOD # thrift, http, or livy
port: PORT_NUMBER
auth: AUTH_METHOD
schema: SCHEMA_NAME
host: HOSTNAME
platform_hint: PLATFORM_HINT # optional; aws_emr_serverless or aws_emr_eks
server_side_parameters: # optional; required keys depend on platform_hint
livy.server.session.ttl: SESSION_TTL_SECONDS # optional when using method: livy
| Поле профиля | Обязательное | Описание | Пример |
|---|---|---|---|
method | Да | Метод подключения. Допустимые значения: thrift, http или livy. | thrift |
port | Да | Номер порта для подключения. | 443 |
auth | Да | Метод аутентификации. | SASL PLAIN, NOSASL, AWS_SIGV4 |
schema | Да | Имя базы данных или схемы, в которой dbt будет создавать объекты и выполнять запросы к ним. | analytics |
host | Да | Имя хоста кластера Spark или рабочей области Databricks. | yourorg.sparkhost.com |
platform_hint | Нет | Указывает dbt v2, какую платформу Spark вы используете. dbt v2 использует это значение для проверки обязательных параметров в server_side_parameters. Допустимые значения: aws_emr_serverless, aws_emr_eks. Если параметр не указан, dbt v2 предполагает, что используется обычный кластер Spark. | aws_emr_serverless |
server_side_parameters | Нет | Параметры сеанса Spark, передаваемые кластеру. Обязательные ключи при использовании platform_hint:- Для aws_emr_serverless используйте emr-serverless.session.executionRoleArn.- Для aws_emr_eks используйте spark.kubernetes.namespace.При использовании method: livy можно задать livy.server.session.ttl, чтобы настроить время, в течение которого сеанс может оставаться неактивным до его завершения. | См. примеры профилей. |
Примеры профилей
- Thrift (бинарный)
- Thrift (HTTP)
- AWS EMR Serverless
- AWS EMR в EKS
~/.dbt/profiles.yml
spark-local-thrift-binary:
target: spark
outputs:
spark:
type: spark
method: thrift
port: 10000
auth: NOSASL
host: localhost
schema: my_schema
~/.dbt/profiles.yml
spark-local-thrift-http:
target: spark
outputs:
spark:
type: spark
method: http
port: 443
auth: NOSASL
# Omit the protocol scheme to use HTTPS. For HTTP, use a host like http://localhost
host: localhost
schema: my_schema
~/.dbt/profiles.yml
spark-emr-serverless:
target: spark
outputs:
spark:
type: spark
method: livy
auth: AWS_SIGV4
port: 443
host: "YOUR_APPLICATION_ID.livy.emr-serverless-services.us-east-1.amazonaws.com"
schema: my_schema
platform_hint: aws_emr_serverless
server_side_parameters:
"spark.driver.memory": "1g"
"spark.driver.cores": 1
"spark.executor.memory": "1g"
"spark.executor.cores": 1
# Required by EMR Serverless when using platform_hint: aws_emr_serverless
"emr-serverless.session.executionRoleArn": "arn:aws:iam::YOUR_AWS_ACCOUNT:role/YOUR_ROLE"
~/.dbt/profiles.yml
spark-emr-eks:
target: spark
outputs:
spark:
type: spark
method: livy
auth: AWS_SIGV4
port: 443
host: "https://my-spark-cluster.com"
schema: my_schema
platform_hint: aws_emr_eks
server_side_parameters:
# Required by EMR on EKS when using platform_hint: aws_emr_eks
"spark.kubernetes.namespace": "emr-jobs"
"spark.driver.memory": "1g"
"spark.driver.cores": 1
"spark.executor.memory": "8g"
"spark.executor.cores": 4
Подробные сведения о параметрах конфигурации см. на странице Настройка Spark.
Нашли ошибку?
0