Databricks 连接¶
Databricks 连接类型支持 Databricks 和 Databricks SQL 集成。
身份验证到 Databricks¶
有几种方法可以使用 Airflow 连接到 Databricks。
使用个人访问令牌 (PAT),即将令牌添加到 Airflow 连接。这是推荐的方法。
使用 Databricks 登录凭据,即将用于登录 Databricks 帐户的用户名和密码添加到 Airflow 连接。请注意,不鼓励使用用户名/密码身份验证,并且
DatabricksSqlOperator
不支持这种身份验证方式。使用从 Azure 服务主体的 ID 和密钥生成的 Azure Active Directory (AAD) 令牌(仅限 Azure Databricks)。服务主体可以定义为工作区内的用户,或工作区外的具有所有者或贡献者权限的用户。
当 Airflow 在分配了托管标识(系统分配或用户分配)的 VM 上运行时,使用为Azure 托管标识获取的 Azure Active Directory (AAD) 令牌。
默认连接 ID¶
与 Databricks 相关的钩子和操作符默认使用databricks_default
。
配置连接¶
- 主机(必填)
指定 Databricks 工作区 URL。
- 登录名(可选)
如果使用*Databricks 登录凭据*进行身份验证,则指定用于登录 Databricks 的
用户名
。如果使用*Azure 服务主体*进行身份验证,则指定 Azure 服务主体的 ID。
如果使用*PAT*进行身份验证,则将此字段留空或使用“token”作为登录名(两者都可以,唯一的区别是,如果登录名为空,则令牌将在请求标头中作为 Bearer 令牌发送;如果登录名为“token”,则将使用 Databricks API 允许的基本身份验证发送令牌,如果您计划将此连接与例如 HttpOperator 重用,这将非常有用)。
如果使用*Databricks 服务主体 OAuth*进行身份验证,则指定服务主体的 ID(AWS 上的 Databricks)。
- 密码(可选)
如果使用*Databricks 登录凭据*进行身份验证,则指定用于登录 Databricks 的
密码
。如果使用*Azure 服务主体*进行身份验证,则指定 Azure 服务主体的密钥。
如果使用*PAT*进行身份验证,则指定 PAT(推荐)。
如果使用*Databricks 服务主体 OAuth*进行身份验证,则指定服务主体的密钥(AWS 上的 Databricks)。
- 额外参数(可选)
指定可在 Databricks 连接中使用的额外参数(作为 JSON 字典)。
如果使用*PAT*身份验证方法,则可以使用以下参数:
token
:指定要使用的 PAT。请考虑切换到在“密码”字段中指定 PAT,因为它更安全。
如果使用 AWS Databricks 服务主体的 OAuth 令牌进行身份验证,则以下参数是必需的:
service_principal_oauth
:必需的布尔值标志。如果指定为true
,则使用客户端 ID 和客户端密钥作为用户名和密码。请参阅使用 OAuth 对服务主体进行身份验证。
如果使用 AAD 令牌进行身份验证,则以下参数是必需的:
azure_tenant_id
:Azure Active Directory 租户的 ID。azure_resource_id
:Azure Databricks 工作区的可选资源 ID(如果服务主体不是工作区内的用户,则为必填)。azure_ad_endpoint
:如果您使用的是特殊的Azure 云(政府云、中国、德国),则为 Azure AD 端点的可选主机名。该值必须包含协议。例如:https://login.microsoftonline.de
。
如果使用 Azure 托管标识的 AAD 令牌进行身份验证,则以下参数是必需的:
use_azure_managed_identity
:必需的布尔值标志,用于指定是否需要使用托管标识而不是服务主体。azure_resource_id
:Azure Databricks 工作区的可选资源 ID(如果托管标识不是工作区内的用户,则为必填)。
使用
DatabricksSqlOperator
时,可以设置以下参数:http_path
:Databricks SQL 端点或 Databricks 集群的可选 HTTP 路径。请参阅文档。session_configuration
:包含 Spark 会话配置参数的可选映射。来自
databricks-sql-connector
包的Connection
对象的命名内部参数。
使用环境变量指定连接时,应使用 URI 语法指定它。
请注意,URI 的所有组件都应进行 URL 编码。
例如:
export AIRFLOW_CONN_DATABRICKS_DEFAULT='databricks://@host-url?token=yourtoken'