問題
您正在使用存儲在遠程Git存儲庫(AWS|Azure|GCP).Databricks用戶可以查看權限(不是工作空間管理員或作業的所有者)不能訪問或查看通過提交的臨時作業的結果dbutils.notebook.run ()來自家長筆記本。
導致
當作業可見性控製(AWS|Azure|GCP),則用戶隻能看到其訪問控製級別允許的作業。對於存儲在工作區中的筆記本,這可以正常工作。但是,Databricks並不管理遠程Git回購的訪問控製,因此它不知道存儲在Git中的筆記本是否有任何權限限製。唯一有權限訪問遠程Git回購中的筆記本的Databricks用戶是作業所有者。結果,其他非管理員用戶被阻止查看,即使他們已經查看了可以查看數據庫中的權限。
解決方案
您可以通過將作業筆記本源配置為Databricks工作區,並使作業的第一個任務從遠程Git回購中獲取最新更改來解決這個問題。
這允許作業必須確保使用存儲在共享的遠程Git repo中的最新版本的筆記本的場景。
這張圖說明了這個過程分為兩部分。首先,從遠程Git repo獲取最新的更改到筆記本。然後,在同步了最新版本的筆記本之後,開始運行筆記本作為作業的一部分。
配置秘密訪問
創建Databricks個人訪問令牌
遵循用戶的個人訪問令牌(AWS|Azure|GCP)文件,以創建個人訪問令牌。
創建秘密作用域
遵循創建一個數據庫支持的秘密作用域(AWS|Azure|GCP)文檔來創建一個秘密範圍。
將您的個人訪問令牌和Databricks實例存儲在secret作用域中
遵循在databicks支持的作用域中創建一個秘密(AWS|Azure|GCP)文檔,以將您創建的個人訪問令牌和Databricks實例存儲為秘密範圍內的新秘密。
Databricks實例是工作空間的主機名,例如xxxxx.cloud.www.eheci.com。
使用腳本同步最新的更改
這個示例Python代碼從遠程Git repo中提取最新版本,並將其與本地筆記本同步。這確保在處理作業之前本地筆記本是最新的。
執行腳本前,需要替換腳本中的如下值:
- < repo-id >—遠程Git repo的名稱。
- < scope-name >-包含秘密的瞄準鏡名稱。
- < secret-name-1 >-保存Databricks實例的秘密的名稱。
- < secret-name-2 >-保存您的個人訪問令牌的秘密的名稱。
%python import requests import json databricks_instance = dbutls .secrets。Get (scope = "", key = " ") token = dbutls .secrets。get(scope = " ", key = " ") url = f"{databricks_instance}/api/2.0/repos/ " #使用repo api獲取repo id https://docs.www.eheci.com/dev-tools/api/latest/repos.html#operation/get-repos payload = json。dump ({"branch": "main" #使用分支/標簽。參考https://docs.www.eheci.com/dev-tools/api/latest/repos.html#operation/update-repo}) headers ={"授權":f"持有者{令牌}","Content-Type": "application/json"} response =請求。request("PATCH", url, headers=headers, data=payload, timeout=60) print(response.text) if response.textstatus_code != 200: raise異常(f"讀取操作失敗。響應代碼:{Response}")