配置笔记本结果存储位置

根据你的组织的隐私要求,你可能需要将所有交互式笔记本结果存储到云帐户的工作区存储帐户中,而不是存储到 Databricks 管理的控制平面默认位置(其中存储着一些笔记本命令结果)。

笔记本命令输出的存储方式因笔记本运行方式而异。

默认情况下,当你通过单击笔记本中的“运行”以交互方式运行笔记本时:

  • 如果结果很小,则会将它们以及笔记本的命令内容和元数据存储在 Azure Databricks 控制平面中。
  • 较大的结果将存储在 Azure 订阅的工作区存储帐户中。 Azure Databricks 会自动创建工作区存储帐户。 Azure Databricks 将此存储区域用于工作区系统数据和你的工作区的 DBFS 根。 笔记本结果存储在工作区系统数据存储中,用户无法访问该存储。 请参阅工作区存储帐户

通过在“作业”页面上计划作业或单击“立即运行”来将笔记本作为作业运行时,所有结果都将存储在帐户的工作区存储帐户中。

你可以将工作区配置为将所有交互式笔记本结果存储在云帐户中,而不考虑结果大小。

配置交互式笔记本结果的存储位置

你可以将工作区配置为将所有交互式笔记本结果存储在 Azure 订阅中,而不是控制平面中。 可以使用管理员设置页REST API 启用此功能。 此配置对作为作业运行的笔记本没有影响,这些笔记本的结果已默认存储在 Azure 订阅中。

请记住以下几点:

  • 对此配置所做的更改仅对新结果有效。 不会移动现有笔记本结果。
  • 有关结果的某些元数据(例如图表列名称)继续存储在控制平面中。
  • 可能会在云提供商那里产生更高的存储成本。
  • 在读取和写入结果时,可能会出现网络和 IO 延迟增加的情况。

使用管理员设置页将所有笔记本结果存储在帐户中

以工作区管理员身份执行以下操作:

  1. 转到设置页
  2. 单击“安全”选项卡。
  3. 单击“将交互式笔记本结果存储在客户帐户中”切换开关。

使用 REST API 将所有笔记本结果存储在帐户中

若要使用 REST API 将工作区配置为将所有笔记本结果存储在 Azure 订阅中:

  • 你必须是工作区管理员。
  • 你需要一个个人访问令牌。 下面的说明假定你已配置了一个包含个人访问令牌的 .netrc 文件,因此你可以在 curl 命令中使用 -n 选项。 有关详细信息,请参阅上面提到的文章。

若要获取当前设置,请调用 GET /workspace-conf 终结点并将 keys 设置为 storeInteractiveNotebookResultsInCustomerAccount

curl -n --request GET \
  'https://<databricks-instance>/api/2.0/workspace-conf?keys=storeInteractiveNotebookResultsInCustomerAccount'

若要使工作区能够将交互式笔记本结果存储在 Azure 订阅中,请调用 PATCH /workspace-conf 终结点并在请求正文中将 storeInteractiveNotebookResultsInCustomerAccount 设置为 true

curl -n --request PATCH \
 'https://<databricks-instance>/api/2.0/workspace-conf' \
 --header 'Content-Type: text/plain' \
 --data-raw '{
    "storeInteractiveNotebookResultsInCustomerAccount": "true"
}'

若要禁用该功能,请将同一标志设置为 false

curl -n --request PATCH \
  'https://<databricks-instance>/api/2.0/workspace-conf' \
 --header 'Content-Type: text/plain' \
 --data-raw '{
    "storeInteractiveNotebookResultsInCustomerAccount": "false"
}'