配置笔记本结果存储位置

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

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

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

  • 如果结果很小,则会将它们以及笔记本的命令内容和元数据存储在 Azure Databricks 控制平面中。
  • 较大的结果将存储在 Azure 订阅的工作区根 Azure 存储实例中。 Azure Databricks 会自动创建根 Azure 存储实例。 Azure Databricks 将此存储区域用于工作区系统数据和你的工作区的 DBFS 根。 笔记本结果存储在工作区系统数据存储中,用户无法访问该存储。
  • 绘图图像和其他二进制对象始终单独存储在 DBFS 根FileStore 区域中。

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

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

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

你可以将工作区配置为将所有交互式笔记本结果存储在 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"
}'