[Ultimate]{class="badge positive"}

Databricks

AVAILABILITY
Databricks源在源目录中可供已购买Real-Time CDP Ultimate的用户使用。

Databricks是一个基于云的平台,专为数据分析、机器学习和AI而设计。 您可以使用Databricks集成并提供整体环境,以便大规模构建、部署和管理数据解决方案。

使用Databricks源连接您的帐户并将Databricks数据摄取到Adobe Experience Platform。

先决条件

完成先决条件步骤以成功将您的Databricks帐户连接到Experience Platform。

检索容器凭据

检索您的Experience Platform Azure Blob Storage凭据,以使您的Databricks帐户以后能够访问它。

要检索您的凭据,请向Connectors API的/credentials端点发出GET请求。

API格式

GET /data/foundation/connectors/landingzone/credentials?type=dlz_databricks_source

请求

以下请求检索Experience Platform Azure Blob Storage的凭据。

查看请求示例
code language-shell
curl -X GET \
  'https://platform.adobe.io/data/foundation/connectors/landingzone/credentials?type=dlz_databricks_source' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

响应

成功的响应提供了您的凭据(containerNameSASTokenstorageAccountName),供以后在Databricks的Apache Spark配置中使用。

查看响应示例
code language-json
{
    "containerName": "dlz-databricks-container",
    "SASToken": "sv=2020-10-02&si=dlz-b1f4060b-6bbd-4043-9bd9-a5f5be72de30&sr=c&sp=racwdlm&sig=zVQfmuElZJzOKkUk8z5lChrJ3YQUE2h6EShDZOsVeMc%3D",
    "storageAccountName": "sndbxdtlndga8m7ajbvgc64k",
    "SASUri": "https://sndbxdtlndga8m7ajbvgc64k.blob.core.windows.net/dlz-databricks-container?sv=2020-10-02&si=dlz-b1f4060b-6bbd-4043-9bd9-a5f5be72de30&sr=c&sp=racwdlm&sig=zVQfmuElZJzOKkUk8z5lChrJ3YQUE2h6EShDZOsVeMc%3D",
    "expiryDate": "2025-07-05"
}
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2
属性 描述
containerName Azure Blob Storage容器的名称。 稍后在完成Databricks的Apache Spark配置时将使用此值。
SASToken Azure Blob Storage的共享访问签名令牌。 此字符串包含授权请求所需的所有信息。
storageAccountName 存储帐户的名称。
SASUri Azure Blob Storage的共享访问签名URI。 此字符串是您正在接受身份验证的Azure Blob Storage的URI及其对应的SAS令牌的组合。
expiryDate SAS令牌的过期日期。 您必须在到期日期之前刷新您的令牌,以便继续在您的应用程序中使用它来将数据上载到Azure Blob Storage。 如果您未在规定的到期日期之前手动刷新令牌,则它将在执行GET凭据调用时自动刷新并提供新令牌。

刷新您的凭据

NOTE
您刷新凭据后,现有凭据将被撤销。 因此,每次刷新存储凭据时,都必须相应地更新Spark配置。 否则,您的数据流将失败。

要刷新凭据,请发出POST请求并包含action=refresh作为查询参数。

API格式

POST /data/foundation/connectors/landingzone/credentials?type=dlz_databricks_source&action=refresh

请求

以下请求刷新您Azure Blob Storage的凭据。

查看请求示例
code language-shell
curl -X POST \
  'https://platform.adobe.io/data/foundation/connectors/landingzone/credentials?type=dlz_databricks_source&action=refresh' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

响应

成功的响应将返回您的新凭据。

查看响应示例
code language-json
{
    "containerName": "dlz-databricks-container",
    "SASToken": "sv=2020-10-02&si=dlz-6e17e5d6-de18-4efc-88c7-45f37d242617&sr=c&sp=racwdlm&sig=wvA4K3fcEmqAA%2FPvcMhB%2FA8y8RLwVJ7zhdWbxvT1uFM%3D",
    "storageAccountName": "sndbxdtlndga8m7ajbvgc64k",
    "SASUri": "https://sndbxdtlndga8m7ajbvgc64k.blob.core.windows.net/dlz-databricks-container?sv=2020-10-02&si=dlz-6e17e5d6-de18-4efc-88c7-45f37d242617&sr=c&sp=racwdlm&sig=wvA4K3fcEmqAA%2FPvcMhB%2FA8y8RLwVJ7zhdWbxvT1uFM%3D",
    "expiryDate": "2025-07-20"
}

配置对您的Azure Blob Storage的访问权限

IMPORTANT
  • 如果群集已终止,服务将在流运行期间自动重新启动群集。 但是,在创建连接或数据流时,必须确保群集处于活动状态。 此外,如果您正在执行数据预览或探索等操作,则群集必须处于活动状态,因为这些操作无法提示自动重新启动已终止的群集。

  • 您的Azure容器包含一个名为adobe-managed-staging的文件夹。 为确保数据的无缝摄取,不要​修改此文件夹。

接下来,必须确保您的Databricks群集具有访问Experience Platform Azure Blob Storage帐户的权限。 在执行此操作时,您可以使用Azure Blob Storage作为写入delta lake表数据的临时位置。

要提供访问权限,您必须在Databricks群集上将SAS令牌配置为Apache Spark配置的一部分。

在Databricks界面中,选择​Advanced options,然后在Spark config输入框中输入以下内容。

fs.azure.sas.{CONTAINER_NAME}.{STORAGE-ACCOUNT}.blob.core.windows.net {SAS-TOKEN}
属性
描述
容器名称
容器的名称。 您可以通过检索Azure Blob Storage凭据获取此值。
存储帐户
存储帐户的名称。 您可以通过检索Azure Blob Storage凭据获取此值。
SAS 令牌
Azure Blob Storage的共享访问签名令牌。 您可以通过检索Azure Blob Storage凭据获取此值。

Azure上的Databricks UI。

如果未提供,则流运行中的复制活动将失败并返回以下错误:

Unable to access container '{CONTAINER_NAME}' in account '{STORAGE_ACCOUNT}.blob.core.windows.net' using anonymous credentials. No credentials found in the configuration. Public access is not permitted on this storage account.

Unity目录治理和群集访问模式

Databricks源连接器在摄取期间对Databricks群集执行读写(I/O)操作。 这些操作需要Unity Catalog对象权限,并且根据群集的访问模式,需要其他群集级别的权限。 请在连接前配置这两者。

授予Unity目录权限

将源对象的以下Unity Catalog权限授予连接(服务主体)使用的标识:

权限
对象
USE CATALOG
目录
USE SCHEMA
架构
SELECT
源表

配置群集的访问模式

选择数据库群集使用的访问模式并完成相应的配置。

TIP
建议使用​专用(单用户)访问模式。 将群集的单个用户分配给连接器的服务主体。 连接器的I/O操作仅使用您的Unity Catalog授权即可完成,因此无需额外的群集级权限,并且所有访问仍受Unity Catalog的管辖。

标准(共享)访问模式

标准(共享)访问模式强制表访问控制。 除了上述Unity Catalog授权外,连接器的I/O操作还需要ANY FILE权限。 将其授予连接器的服务主体:

GRANT SELECT ON ANY FILE TO `{SERVICE_PRINCIPAL}`;
GRANT MODIFY ON ANY FILE TO `{SERVICE_PRINCIPAL}`;
IMPORTANT
ANY FILE是直接文件访问权限的旧版特权,不受Unity目录管辖 — 它的作用范围比Unity目录对象权限更广,并且本身不会授予或绕过对Unity目录对象的访问权限(Unity目录表仍需要自己的UC权限)。 请与您的安全团队一起审查;要避免授予权限,请改用专用访问模式。

如果群集访问模式所需的权限未就位,则在执行期间摄取将失败,并出现以下错误:

[INSUFFICIENT_PERMISSIONS] ... on any file. SQLSTATE: 42501.

将Databricks连接到Experience Platform

现在您已完成先决步骤,可以继续操作,并将您的Databricks帐户连接到Experience Platform:

recommendation-more-help
experience-platform-help-sources